한 TMUX 창에서 다른 창으로 텍스트 복사 (vim 사용)


133

vim에서 각각 하나의 tmux 창에 두 개의 파일이 열려 있습니다. 한 파일에서 다른 파일로 10 줄을 복사하고 싶습니다.

어떻게 마우스의 사용하지 않는이 작업을 수행 할 수 Copy> - Paste?


2
tmux 가 포함될 수 있지만 일반적으로 더 간단한 방법이 있습니다. 두 Vim 인스턴스가 동일한 (로컬?) 머신에 있습니까? 일반적으로, 난 그냥 그것에 대해 임시 파일을 사용합니다 (즉, 시각적으로 라인을 선택한 :w /tmp/lines:r /tmp/lines다른 인스턴스). 또는 Vim이 시스템 클립 보드와 대화하는 방법을 알고 있다면 임시 파일을 피하기 위해 +또는 *레지스터를 사용할 수 있습니다 .
Chris Johnsen

답변:


193

tmux 단축키를 사용해야합니다. tmux 명령 바로 가기가 기본값이라고 가정하면 Ctrl+ b, 다음은 :

  1. Ctrl+ b, [복사 (?) 모드로 들어갑니다.

  2. 강조 표시 할 텍스트의 시작 / 끝으로 이동합니다.

  3. Ctrlspace

    텍스트 강조 표시를 시작하십시오 (Arch Linux에서). OSX 및 기타 Linux의 소스에서 tmux를 컴파일하면 Space대개 자체적으로 작동합니다. 선택한 텍스트는 색상을 변경하므로 명령이 작동했는지 알 수 있습니다.

  4. 복사 할 텍스트의 반대쪽 끝으로 이동하십시오.

  5. Alt+ w선택된 텍스트를 tmux 클립 보드에 복사합니다. (Mac에서는 Esc+ 사용 w)

  6. 커서를 반대편의 tmux 창 또는 완전히 다른 tmux 창으로 이동하십시오. 방금 복사 한 텍스트를 붙여 넣을 위치에 커서를 놓습니다.

  7. Ctrl+ b, ]tmux 클립 보드에서 복사 한 텍스트를 붙여 넣습니다.

tmux는 명령을 사용자 정의 키보드 단축키에 매핑하는 데 매우 능숙합니다.

참조 Ctrl+ b, ?설정 키보드 단축키의 전체 목록.


4
감사. 단지 사이드 노드 : Alt + w는 Mac에서 작동하지 않았습니다. Alt는 기본적으로 Esc에 매핑되었습니다. 따라서 Esc + w입니다.
Karan

11
screen바로 가기 를 사용하는 경우 : Ctrl + A [(복사 모드 입력), Space(강조 시작), Enter(강조 종료), Ctrl + A ](붙여 넣기).
jfs

11
alt + w는 그렇지 않지만 "enter"는 나를 위해 작동한다는 점에 주목할 가치가 있습니다.
엘리야 린

3
awhan.wordpress.com/2010/06/20/copy-paste-in-tmux에 명시된 바와 같이 vi 키 바인딩이있는 경우 5 단계를 Enter키로 바꿔야 합니다.
Ying Xiong

2
텍스트 편집기에 복사하여 붙여 넣어야하는 경우 어떻게합니까? 어떤 이유로 텍스트를 선택한 후 'enter'를 누른 후에도 선택한 텍스트를 선택하지 않는 것 같습니다.
uday

33

불행히도 Alex Leach의 답변에 아직 의견을 추가 할 수 없으므로 Mac OS X 사용자를 위해 여기에 부록을 추가 할 것입니다.

  1. Enter 선택한 텍스트를 복사

1
감사! 나는 모든 기본 설정으로 byobu/ tmux를 사용하여 Ubuntu Xenial을 사용 하고 있는데 Alt + w는 작동하지 않았습니다.
Andrea Zonca

1
이것은 tmux 2.0이 설치된 OS X Yosemite에서도 작동하지 않으며 alt + w 또는 esc + w도 작동하지 않습니다. (
weberc2

Zoc 터미널을 사용하는 Windows에서도 작동합니다.
jdhao

15

macOS에서 vim 및 tmux를 사용하는 경우 (macOS 10.12.2, tmux 2.3에서 테스트) :

(tmux의 접두사 키 조합이이라고 가정하십시오 prefix. 접두어는 기본적 으로 ctrl+ b입니다.)

  • 부:
    1. prefix+ [를 눌러 복사 모드로 들어갑니다.
    2. 화살표 키를 사용하여 텍스트 선택 시작 / 끝으로 이동하십시오.
    3. ctrl+를 누릅니다 space( ctrl+ space를 접두어로 설정 한 경우 대신 ctrl+ space+ space를 누름 )
    4. 선택의 다른쪽으로 이동하려면 화살표 키를 사용하십시오.
    5. ctrl+를 누릅니다 w.
  • 풀:
    1. 삽입 모드에서 prefix+ ]를 누릅니다 .

8

ZOC 터미널 ssh 클라이언트를 사용하여 Windows 시스템에서 CentOS 서버에 연결하고 있습니다. 여기 나를 위해 일하는 것이 있습니다 :

  • 복사 모드 들어가기 : <prefix>+[
  • 복사 시작 : <Space>
  • 텍스트 복사 : <Enter>
  • 텍스트 붙여 넣기 : <prefix>+]

2

일반 y 및 p 대신 "* y 및"* p와 함께 시스템 클립 보드를 사용할 수 있습니다.


1
시스템 클립 보드를 사용하려면 "+2yy– 두 줄을 X11 클립 보드에 복사 "+dd– 한 줄을 X11 클립 보드에 복사 "+p– X11 클립 보드 붙여 넣기
Patryk

이 명령을 사용하기 전에 무엇을 입력해야합니까?
Thomas Ahle

@ThomasAhle, no .. 문자 그대로 큰 따옴표 ( "), 더하기 (+), 2ys (y)가 있습니다. 일반 모드인지 확인하십시오. 일반 모드 인 경우 다음을 사용할 수 있습니다 h,j,k,l. 또한 우분투 VM에서 가끔 "+"레지스터가 알려지지 않은 이유로 사라지는 것을 보았습니다. 레지스터가 있는지 확인하기 위해 첫 번째 열에 문자열이 있는지 +입력 :reg하고 확인할 수 있습니다 "+.
alpha_989

그렇습니다, 이것이 답입니다. tmux 복사 / 붙여 넣기를 사용하여 제안 된 다른 것보다 훨씬 간단하며 줄 번호를 엉망으로 만들지 않습니다. 당신이 표준 매핑하는 경우이 문제를 야기 y하고 p"+y"+p?
라이언

1

vim열린 경우 vim 복사 붙여 넣기를 사용하여 텍스트를 복사하는 것이 좋습니다.

Tmux 복사 페이스트가 작동하지만 몇 가지 단점이 있습니다.

먼저 여러 줄의 텍스트를 복사 할 때는 여러 줄을 선택해야합니다. Tmux 복사 페이스트는 일반적으로 vim라인 번호가 있거나 vim 거터에 표시 (예 : 상대 번호 / 절대 번호)가 있음 을 이해하지 못합니다 . 결과적으로 그것들도 복사됩니다.

둘째, 텍스트에 특정 언어 별 형식이 있고 tmux를 사용하여 붙여 넣기를 vim에 직접 복사하려고하면 형식이 엉망이된다는 것을 알았습니다. 사용하면 피할 수 있습니다 set paste!. 그러나 더 많은 작업이 필요합니다.

사용하여 "+y복사 및 "+p붙여 넣기

Vim기본적으로 하나 사용하여 VIM 버퍼 시스템 클립 보드 사이 페이스트를 복사하는 방법을 제공 "+y하거나 "*y. 그런 다음 사용하여 붙여 넣기 "+p또는 "*p. 이렇게하면 홈통이나 vim과 관련이없는 임의의 다른 마크의 상대 숫자를 복사하지 않아도됩니다.


0

tmux 단축키 시퀀스가 ​​약간 길어서 기억하기 어려운 vim 사용을위한 두 가지 옵션

답변처럼 위에서 사용할 수 말했다 "+y"*y다음 복사하기 "+p"*p붙여 각각. vim이 기본적으로 클립 보드를 사용하기를 원하면 바로 사용할 수 있습니다 y/p.

set clipboard=unamed "sets the default copy register to be *
set clipboard=unamedplus "sets the default copy register to be +

클립 보드 명령의 소스 : https://vi.stackexchange.com/questions/84/how-can-i-copy-text-to-the-system-clipboard-from-vim

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.