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

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 구성에서이를 수행하는 방법이 있습니까?



답변

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

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

(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 2.4와 호환

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


답변

다음과 같은 몇 가지 기술적 문제가 발생합니다.
“특별 모드”바인딩 (예 : 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에 나열된 것과 같은 바인딩이 있습니다 .)


답변

tmux 용 tmux-yank 플러그인을 살펴보십시오.
https://github.com/tmux-plugins/tmux-yank

tmux에서 시스템 클립 보드로 복사 / 붙여 넣기를 자동화하는 방법을 제공합니다. OSX / Linux / Cygwin 시스템에서 작동합니다.


답변

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

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


답변

이것이 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를 사용하여 터미널에 붙여 넣을 수 있습니다.


답변