이것은 xclip을 사용하여 원격 (ssh) tmux 세션에서 버퍼를 복사하는 데있어 두 가지 주요 문제를 해결 해야하는 다소 긴 대답입니다.
1. 무 반응 xclip
나에게 @Grauwolf의 대답 이 xclip
작동하지 않았습니다 (tmux 창을 완전히 응답 하지 않습니다). 아치 위키 의 Tmux 페이지 에서 이유를 발견했습니다 .
xsel과 달리 xclip은 현재 로케일에 맞지 않는 원시 비트 스트림을 인쇄하는 데 더 효과적입니다. 그럼에도 불구하고 xclip은 tmux의 버퍼에서 읽은 후에 STDOUT을 닫지 않기 때문에 xclip 대신 xsel을 사용하는 것이 더 좋습니다. 따라서 tmux는 복사 작업이 완료되었음을 알지 못하고 xclip이 종료 될 때까지 계속 기다리므로 tmux가 응답하지 않습니다. 해결 방법은 xclip의 STDOUT을 / dev / null 로 리디렉션하는 것입니다.
따라서 바인딩은 다음과 같아야합니다.
bind-key C-y run "tmux save-buffer - | xclip -i -sel clip > /dev/null"
이제 tmux 세션이 로컬 인 경우 작동합니다.
2. xclip을 X에 연결할 수 없습니다
ssh -X 대신 tmux를 사용하는 경우 이것이 직접 작동하지 않을 가능성이 큽니다 .
쉘 변수 $DISPLAY
를 올바르게 설정해야하기 때문입니다.
완벽한 솔루션
그래서 나를 위해 완벽한 작업 솔루션 은 다음 줄을 내 안에 넣는 것입니다 ~/.tmux.conf
.
set-option -g update-environment "DISPLAY"
bind-key C-y run "export DISPLAY=`tmux show-env | sed -n 's/^DISPLAY=//p'`; tmux save-buffer - | xclip -i -selection clipboard >/dev/null"
# Or more concise:
bind-key C-y run "tmux save-buffer - | xclip -i -selection clipboard -d `tmux show-env | sed -n 's/^DISPLAY=//p'` >/dev/null
기본에서 붙여 넣기 :
bind-key C-p run "xclip -d `tmux show-env | sed -n s/^DISPLAY=//p` -o | tmux load-buffer - && tmux paste-buffer"
$DISPLAY
소싱하는 동안 올바르게 설정되지 않은 이유를 완전히 이해하지 못 .tmux.conf
하므로 tmux show-env
및 로 추출 해야하는 이유 sed
입니다.
tmux> = 1.8 인 경우 다음을 사용하여이 명령을 조정할 수 있습니다 copy-pipe
.
bind-key -t vi-copy y copy-pipe 'xclip -in -selection clipboard -d `tmux show-env | sed -n s/^DISPLAY=//p` >/dev/null'