
저는 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눌렀을 때 select 를 사용하여 선택 항목을 tmux에 복사한 다음 을 사용하여 시스템 클립보드로 내보낼 수 있기를 원합니다 xclip
.
불행히도 이 작업을 시도하면 다음과 같은 내용이 표시됩니다.
.tmux.conf: 14: unknown command: copy-selection && run "tmux save-buffer | xclip -selection clipboard"
tmux 구성에서 이를 수행할 수 있는 방법이 있습니까?
답변1
이것도 답변됨여기, 하지만 사용법을 이해하는 데 시간이 좀 걸렸기 때문에 헷갈리시는 분들을 위해 설명하겠습니다.
이것은 기본적으로 원하는 설정입니다.
(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
[
복사 모드로 들어갑니다. 그런 다음 Space
vi 이동 키를 눌러 선택하십시오. 그런 다음 Enter
클릭하는 대신 클릭 y
하면 선택 항목이 클립보드에 복사됩니다.
참고: 이는 vi 키와 함께 tmux의 기본 바인딩을 사용한다고 가정합니다.
Tmux에는 모드마다 다른 키 바인딩 테이블이 있습니다. 따라서 복사 모드에서 키 작동을 설정하십시오 bind-key -t vi-copy y
. 처음에는 선택 후 공을 치는 y
것이 익숙해 져서 혼란 스러웠습니다 . 실제로는 명령에 대한 기본 키 바인딩입니다(복사 모드에서). 이 명령을 사용하면 새 키를 바인딩하여 선택 사항을 명령에 전달할 수 있습니다(이 경우 ) .Enter
Enter
copy-selection
copy-pipe
xclip
를 실행하면 복사 모드에 대한 모든 키 바인딩을 볼 수 있습니다 list-keys -t vi-copy
.
답변2
답변3
나는 여기저기서 많은 것을 시도했지만 이것이 Ubuntu 20 LTS 및 tmux3.0a를 사용하는 내 파일에서 나에게 ~/.tmux.conf
도움이 된 것 입니다.
#for copying to sys clipboard
bind -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
bind -T copy-mode-vi C-j send-keys -X copy-pipe-and-cancel "xclip -i -f -selection primary | xclip -i -selection clipboard"
#general other stuff
set -g default-terminal "xterm-256color"
set -g mouse on
set-window-option -g mode-keys vi
답변4
xclip
Wayland에서는 대신 wl-clipboard 패키지의 /를 사용하는 것이 더 좋습니다 wl-copy
. wl-paste
이것은 나에게 효과적입니다.
set-window-option -g mode-keys vi
bind-key -T copy-mode-vi 'v' send-keys -X begin-selection
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel "wl-copy"
bind C-p run "wl-paste --no-newline | tmux load-buffer - ; tmux paste-buffer"
고쳐 쓰다:같은걸 사용하기 때문에tmux.confX11, Wayland 및 Cygwin에서는 다음 구성으로 끝났습니다.
bind-key -T copy-mode-vi v send -X begin-selection
if-shell -b 'echo $XDG_SESSION_TYPE | grep -q x11' "\
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard > /dev/null'; \
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard > /dev/null'; \
bind-key C-p run 'xclip -out -selection clipboard | tmux load-buffer - ; tmux paste-buffer'"
if-shell -b 'echo $XDG_SESSION_TYPE | grep -q wayland' "\
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'wl-copy'; \
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'wl-copy'; \
bind-key C-p run 'wl-paste --no-newline | tmux load-buffer - ; tmux paste-buffer'" "\
\
bind-key -T copy-mode-vi 'y' send-keys -X copy-pipe-and-cancel 'cat - >/dev/clipboard'; \
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel 'cat - >/dev/clipboard'; \
bind-key C-p run 'cat /dev/clipboard | tmux load-buffer - ; tmux paste-buffer'"