tmux에서 클립 보드로 선택 물 복사


22

macOS에서 iTerm2의 tmux에서 마우스로 텍스트를 선택하면 선택한 텍스트가 클립 보드에 복사됩니다. 추가 버튼을 클릭 할 필요가 없습니다. 원하는 텍스트를 선택하면됩니다.

macOS의 terminal.app에서 tmux를 테스트했지만 작동하지 않습니다 y. 선택 항목을 클립 보드에 복사하려면 누르십시오 .

마우스 바인딩 (와 MouseOnSelection비슷한 것 MouseDown1Pane) 이 있다고 생각 했지만 웹 및에서 유용한 것을 찾을 수 없었습니다 man tmux.

우분투 16.10에서 비슷한 행동을 취할 수있는 방법이 있는지 궁금합니다.

내 tmux 도트 파일은 여기에서 사용할 수 있습니다 (link) .

답변:


44

vi 복사 모드 바인딩 및 xclip이 포함 된 Tmux 2.4 이상 :

set-option -g mouse on
set-option -s set-clipboard off
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -se c -i"

이전 tmux 버전의 경우 emacs 복사 모드 바인딩 (기본값) 또는 비 X 플랫폼 (예 : xclip 없음)은 아래 설명을 참조하십시오.


설명 : 먼저 마우스 옵션을 활성화해야 tmux가 마우스를 캡처하고 마우스 이벤트를 바인딩 할 수 있습니다.

set-option -g mouse on

그놈 터미널은 xterm 이스케이프 시퀀스를 사용하여 클립 보드 설정을 지원하지 않으므로 set-clipboard옵션이 꺼져 있는지 확인해야합니다 .

set-option -s set-clipboard off

이 옵션은 iTerm2 ( set-clipboardtmux 매뉴얼 참조) 에서 기본적으로 지원되고 활성화 될 수 있습니다 ( tmux 설명서 참조 ).

그런 다음 복사 모드 MouseDragEnd1Pane"키" 를 바인드 할 수 있습니다 . 즉, 창에서 클릭하고 드래그 한 후 첫 번째 마우스 버튼을 놓으면 현재 복사 모드 선택 (에 대한 기본 바인딩으로 수행됨)을 가져 오는 tmux 명령에 MouseDrag1Pane파이프 할 수 있습니다. 쉘 명령에. 이 tmux 명령은 copy-pipetmux 2.4 이전이며로 변경 되었습니다 send-keys -X copy-pipe[-and-cancel]. 쉘 명령에 관해서는, 시스템 클립 보드의 내용을 파이프 라인으로 설정하는 것만 있으면됩니다. xclip은 다음 명령에서이를 수행하는 데 사용됩니다. "xclip -selection clipboard -i"비 X 플랫폼 에서 아래에 대한 일부 동등한 대체 는 "wl-copy"(Wayland), "pbcopy"(macOS), "clip.exe"(Windows, WSL) 및 "cat /dev/clipboard"(Cygwin, MinGW)입니다.

Tmux 2.4 이상 :

# For vi copy mode bindings
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -T copy-mode MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -selection clipboard -i"

Tmux 2.2 ~ 2.4 :

# For vi copy mode bindings
bind-key -t vi-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"
# For emacs copy mode bindings
bind-key -t emacs-copy MouseDragEnd1Pane copy-pipe "xclip -selection clipboard -i"

tmux 2.2 이전 :

마우스 드래그 지원 후 복사는 원래 새 mode-mouse옵션을로 설정하여 Tmux 1.3에 추가되었습니다 on. Tmux 2.1은 익숙한 마우스 키 바인딩으로 마우스 지원을 변경했지만 DragEnd2.2에서 소개 된 바인딩 은 없었습니다 . 따라서 2.2 이전에는 마우스 드래그로 시스템 클립 보드를 설정하는 유일한 방법은 xterm 이스케이프 시퀀스 ( set-clipboard옵션)를 기본적으로 사용하는 것입니다 . 이는 set-clipboardGNOME 터미널과 같이을 지원하지 않는 터미널에 대한 드래그 앤 복사 동작을 얻으려면 tmux 2.2 이상으로 업데이트해야합니다 .


3
이 고품질의 답변은 마침내 모든 것이 나를 위해 클릭하게 만든 것입니다. 감사합니다!
cjauvin

2
그들의 터미널 기능과 영업 이익에 의해 명시된 기본 방법을 변경했기 때문에 맥에서이 작업을 수행하기 위해 노력하고있는 사람들을위한 더 이상 작동하지 않습니다 (I 자체 복사 버퍼를 가지고 Byobu을 사용하고 있습니다) : 교체하는 xclip...간단한에 문 것은 pbcopy않습니다 트릭.
Darrel Holt

이 스레드의 솔루션 중 어느 것도 나를 위해 작동하지 않습니다.
양키

1
안녕하세요 Josh, ~ / .tmux.conf 소스 파일을 만들 때 다음과 같이 나타났습니다.Unknown key: MouseDragEnd1Pane
Xifeng Li

@XifengLi 어떤 tmux 버전과 OS를 사용하고 있습니까? DragEnd열쇠 에 적어도 tmux 2.2가 필요하다고 생각합니다 .
Josh Brobst

8

수용 된 답변의 확장으로 사람들은 종종 마우스 버튼을 놓을 때 방해가 복사 모드를 종료한다는 것을 알게됩니다 (이것으로 발생합니다 copy-pipe-and-cancel). https://github.com/tmux/tmux/issues/140을 참조 하십시오 . 따라서 최신 tmux (2.6을 사용함)에서 copy-pipe함께 clear selection선택하여 복사 할 수 있지만 복사 모드를 종료하지는 않습니다.

bind-key -T copy-mode-vi MouseDragEnd1Pane send -X copy-pipe "xclip -selection clipboard -i" \; send -X clear-selection

2

msys2에서 Windows 클립 보드로 복사하고 선택을 지우려면 두 가지 답변 모두 확장 :

# For vi copy mode bindings
bind -Tcopy-mode-vi MouseDragEnd1Pane send -X copy-pipe "cat > /dev/clipboard" \; send -X clear-selection
# For emacs copy mode bindings
bind -Tcopy-mode MouseDragEnd1Pane send -X copy-pipe "cat > /dev/clipboard" \; send -X clear-selection

좋은 지적. 복사 모드를 직접 사용하고 (emacs 스타일) 테스트 후 내 구성을 붙여 넣었습니다. 허용 된 답변과 같이 둘 다 포함하도록 답변을 업데이트했습니다.
Shawn Hoover

0

또 다른 확장은 Shift키 를 사용하는 것 입니다.

Shift마우스로 텍스트를 선택하는 동안 길게 누릅니다 . 이제 (킵 홀딩 누르거나 표준 오른쪽 클릭 메뉴를 얻을 Shift다시) 당신은 사용할 수 있습니다 Ctrl+Shift+CCtrl+Shift+V복사 및 붙여 넣습니다. 복사 한 텍스트는 시스템 클립 보드 에서도 사용할 수 있습니다 .

에서 테스트 Ubuntu 18.04.1tmux 2.6.

출처 : https://forum.upcase.com/t/tmux-ctrl-shift-c-and-ctrl-shift-v-bindings/1208 .

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