tmux의 클립보드에 선택 항목 복사

tmux의 클립보드에 선택 항목 복사

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

macOS의 Terminal.app에서 tmux를 테스트했지만 작동하지 않습니다. y선택 항목을 클립보드에 복사하려면 클릭해야 합니다.

나는 마우스 바인딩(그것과 유사 MouseOnSelection) 이 있다고 생각 MouseDown1Pane하지만 웹과 주변에서는 유용한 것을 찾을 수 없습니다 man tmux.

Ubuntu 16.10(바람직하게는 Gnome Terminal)에서 유사한 동작을 달성할 수 있는 방법이 있는지 궁금합니다.

답변1

Tmux 2.4+는 vi 복사 모드에 바인딩되어 있으며클립:

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 -selection clipboard -i"

이전 tmux 버전, emacs 복사 모드 바인딩(기본값) 또는 X가 아닌 플랫폼(예: xclip 없음)의 경우 아래 지침을 참조하세요.


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

set-option -g mouse on

set-clipboardGnome-terminal은 xterm 이스케이프 시퀀스를 사용한 클립보드 설정을 지원하지 않으므로 해당 옵션이 꺼져 있는지 확인해야 합니다 :

set-option -s set-clipboard off

이 옵션은 iTerm2에서 기본적으로 지원되고 활성화됩니다( set-clipboardtmux 매뉴얼 참조). 여기서 동작을 설명합니다.

그런 다음 MouseDragEnd1Pane복사 모드 "키"(즉, 창에서 클릭하고 드래그한 후 첫 번째 마우스 버튼을 놓을 때)를 현재 복사 모드 선택(기본 바인딩에 의해 수행됨 MouseDrag1Pane)을 가져오는 tmux 명령에 바인딩하고 이를 쉘 명령. 이 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).

티먹스 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-clipboard(예: GNOME 터미널) 에 대한 끌어서 놓기 동작을 얻으려면 최소한 tmux 2.2로 업데이트해야 함을 의미합니다 .

답변2

또 다른 확장은 키 사용에 관한 것입니다 Shift.

Shift마우스로 텍스트를 선택하는 동안 길게 누르세요. 이제 표준 오른쪽 클릭 메뉴(길게 누르거나 다시 누르기)가 표시되며 및 를 사용하여 복사하여 붙여넣을 Shift수 있습니다 . 복사된 텍스트는 다음에서도 찾을 수 있습니다.Ctrl+Shift+CCtrl+Shift+V시스템 클립보드.

Ubuntu 18.04.1로 테스트하세요 tmux 2.6.

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

답변3

허용되는 답변의 확장으로 사람들은 종종 복사 모드를 종료하기 위해 마우스 버튼을 놓는 것이 불편하다고 생각합니다 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

답변4

위의 답변에 추가하면 이것은 Mac에서 나에게 효과적이었습니다. 제 경우에는 xclipboard를 사용해도 작동하지 않았습니다.

bind -T copy-mode-vi  MouseDragEnd1Pane   send-keys -X copy-pipe-and-cancel pbcopy

관련 정보