tmux에서 vi-copy 모드로 시스템 클립 보드 사용


50

tmux 1.6을 실행 중이며 대화 형 모드로 복사 할 때 vi 스타일 키 바인딩을 사용하고 시스템 클립 보드를 사용하도록 구성하려고합니다.

set-window-option -g mode-keys vi

bind-key -t vi-copy 'v' begin-selection
bind-key -t vi-copy 'y' "copy-selection && run \"tmux save-buffer | xclip -selection clipboard\""

간단히 말해서 C+ 를 수행 [한 다음 v복사 할 텍스트 선택을 시작하고 y눌렀을 때 선택 항목을 tmux 선택 항목에 복사 한 다음을 사용하여 시스템 클립 보드로 내보내십시오 xclip.

불행히도,이 작업을 수행하려고하면 다음이 표시됩니다.

.tmux.conf: 14: unknown command: copy-selection && run "tmux save-buffer | xclip -selection clipboard"

tmux 구성에서이를 수행하는 방법이 있습니까?

답변:


86

이것도 여기 에 대답 했지만 사용법을 이해하는 데 시간이 걸렸으므로 혼란 스러웠던 다른 사람을 설명하겠습니다.

이것은 기본적으로 설정입니다.

(tmux 버전 <2.5 )

bind -t vi-copy y copy-pipe 'xclip -in -selection clipboard'

(tmux 버전> = 2.5 )

bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'

그런 다음 Ctrl+b [을 눌러 복사 모드로 들어갑니다. 그런 다음 Spacevi 키를 누르십시오 . 그런 다음을 누르지 않고을 Enter누르면 y선택 항목이 클립 보드에 복사됩니다.

참고 : 이것은 vi 키와 함께 tmux의 기본 바인딩을 사용한다고 가정합니다.

Tmux에는 모드마다 다른 키 바인딩 테이블이 있습니다. 따라서 복사 모드 bind-key -t vi-copy y에서 y키 의 동작을 설정 합니다. 처음에는 Enter선택 후 타격에 익숙해 져 혼란 스러웠습니다 . Enter실제로는 copy-selection명령 의 기본 키 바인딩입니다 (복사 모드에있을 때). 이 copy-pipe명령을 사용하면 선택 영역을 명령에 파이프하기 위해 새 키를 바인딩 할 수 있습니다 (이 경우에는) xclip.

를 실행하면 복사 모드에 대한 모든 키 바인딩을 볼 수 있습니다 list-keys -t vi-copy.


대단히 감사합니다. tmux 1.9a를 다운로드하여 컴파일해야했지만 어렵지 않았으며 이제는 작동합니다!
Naftuli Kay

3
xclip시스템에 실제로 설치되어있는 이중 검사만으로는 작동하지 않는 경우 (우분투에 기본적으로 설치되어 있지 않은 경우 설치해야 함 sudo apt-get install xclip)
ecerulm

3
OSX를 들어, 교체 xclip와 함께 pbcopy. Windows에서 Cygwin에서의 경우로 교체 putclip(로부터 cygutils-extra패키지).
SnoringFrog 2016 년

5
이 블로그 항목 의 다음 바인딩은 Tmux 2.6에서도 훌륭하게 작동하며 복사 할 때 화면에 임의의 문자를 표시하는 단점이 없습니다.bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
Matthias Braun

1
.tmux.conf에서이 줄을 제거 할 때까지 이것은 작동하지 않았습니다 set -g mouse on. 이것은 "마우스 모드" 를 가능하게하기로되어 있지만, 마우스 를 제거한 후에도 마우스가 제대로 작동합니다 (스크롤 휠 작동, 마우스 선택 작동) ...
ndemou

11

벤 데이비스 답변으로 업데이트 된 버전

tmux 2.4와 호환

bind -T copy-mode-vi y send -X copy-pipe "xclip -selection c"

4
나는 그것이 copy-pipe-and-cancel보다는 조금 더 잘 작동한다는 것을 알았 습니다 copy-pipe. 이것은 tmux 2.5에 있습니다
wreckgar23

6

다음과 같은 몇 가지 기술적 문제가 발생합니다.
"특별 모드"바인딩 (예 : vi-copy)…

  1. 다른 명령 세트를 사용하십시오 (즉, run-shell일명 run사용 불가).
  2. 여러 명령을 바인딩 할 수있는 기능이 없습니다 (일반적으로 ;셸의 &&명령 구분 기호를 사용할 수 없음).

tmux 1.8에는 다음 copy-pipe이 도움이 될 수 있습니다.

bind-key -t vi-copy y copy-pipe 'xclip -selection clipboard >/dev/null'

( FAQ에 나열된 것과 같은 바인딩이 있습니다 .)


1
tmux 1.8이 있는데 작동하지 않는 것 같습니다. (편집) 어, 나는 Enter에 제출하는 텍스트 영역 입력이 싫어. 어쨌든이 키 바인딩을 추가했지만 <prefix> -y를 수행하고 [space]를 누르면 내용이 클립 보드에 복사되지 않습니다.
벤 데이비스

그냥 알아 냈어 "vi-copy"키 바인딩 테이블의 작동 방식을 이해하지 못했습니다.
벤 데이비스


2

macOS의 경우이 줄을 추가 할 수 있습니다 .tmux.conf

bind -t vi-copy y copy-pipe 'pbcopy'


tmux> = 2.5 인 경우 macOS 사용자 :bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'pbcopy'
Dai

1

이것이 tmux 2.2를 사용하고 xclip을 설치 한 결과입니다. Vim 스타일 복사의 경우 .tmux.conf에 다음을 추가하십시오.

bind Escape copy-mode
bind -t vi-copy 'v' begin-selection
bind -t vi-copy 'y' copy-selection
# Vim style copy to clipboard
bind-key -t vi-copy y copy-pipe "xclip -selection c > /dev/null"
bind-key p run "xclip -o -sel clip | tmux load-buffer - ; tmux paste-buffer"

복사 모드에서 PREFIX v가 선택을 시작하고 PREFIX y가 클립 보드에 복사합니다. PREFIX p를 사용하여 터미널에 붙여 넣을 수 있습니다.

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