tmux와 클립보드 사이에서 텍스트 선택 항목 복사/붙여넣기

tmux와 클립보드 사이에서 텍스트 선택 항목 복사/붙여넣기

나는 최신 버전의 tmux(git 저장소에서)와 xclip(0.12)을 실행하고 있으며 Emacs와 같은 키 바인딩을 사용하여 에서 텍스트를 이동하고 선택 항목을 클립보드로 copy-mode복사( ) 하고 싶습니다. M-w) 복사 버퍼에서 C-y클립보드로 붙여넣기( )합니다.

C-y지금까지는 Emacs와 같은 키 바인딩을 사용하여 텍스트를 붙여넣고 이동할 수 있었지만copy-mode아직도 텍스트를 복사할 수 없습니다tmux 버퍼에서(예: in copy-mode)

내가 찾은이 스레드전체 버퍼를 클립보드에 복사하거나 그 반대로 복사하는 경우가 있지만 나에게는 작동하지 않는 것 같습니다.

또한 tmux-users메일링 리스트에서 최신 버전의 tmux(git 저장소에만 있음)가 이라는 명령을 제공한다고 들었습니다 copy-pipe. 매뉴얼 페이지에서는 이 명령에 대해 다음과 같이 설명합니다.

명령 중 하나는 선택 항목을 복사하여 명령에 파이프하는 copy-pipe라는 인수 하나를 허용합니다. 예를 들어, 다음 명령은 "Cq"를 바인딩하여 선택 항목을 /tmp 및 붙여넣기 버퍼에 복사합니다.

       bind-key -temacs-copy C-q copy-pipe "cat >/tmp/out"

copy-pipe선택 항목을 다른 명령으로 파이프하는 데 부분적으로 사용되는 것처럼 보입니다 . 이 설명과 명령에도 약간의 오타가 있는 것 같습니다. (무엇입니까 temacs-copy?)

어쨌든 내가 하고 싶은 일은 다음과 같다.

복사:

  1. 복사 모드 시작
  2. Emacs 탐색 명령을 사용하여 복사하려는 텍스트로 이동합니다(예: C-f커서 를 이동하려면 , , , C-bM-f) .M-bC-aC-e접두사 없음그들 중 누구에게나.
  3. 선택한 텍스트를 클립보드에 복사하려면 다음 명령을 사용하십시오 M-w.접두사 없음누구나)

반죽:

  1. 나는 C-y(아니요) 을 입력해야 copy-mode터미널에 텍스트를 붙여넣을 수 있습니다(접두사 없음누구나)

다음 복제 방법을 시도했지만 성공하지 못했습니다.

bind-key -n M-w run "tmux save-buffer - | xclip -i -selection clipboard" 

그러나 붙여넣기는 잘 작동합니다.

bind-key -n C-y run "xclip -o | tmux load-buffer - ; tmux paste-buffer"

이상하게도 xclip -i -selection clipboard위 복사 명령의 "" 부분이 제대로 작동한다는 것을 알고 있습니다.저 할 수 있어요명령줄에서 콘텐츠를 클립보드에 복사합니다. 예:

echo "Hello world. How are you?" | xclip -i -selection clipboard

이 모든 것,복사 모드에서 선택 항목을 클립보드로 복사하는 방법은 무엇입니까?

답변1

새 버전의 tmux(1.8+)에서는 다음 명령을 사용하십시오 tmux.conf.copy-pipe

set -g mouse on
# To copy:
bind-key -n -t emacs-copy M-w copy-pipe "xclip -i -sel p -f | xclip -i -sel c "

# To paste:
bind-key -n C-y run "xclip -o | tmux load-buffer - ; tmux paste-buffer"
  1. prefix+[복사 모드 시작
  2. 마우스로 콘텐츠 선택(길게 누르기)
  3. M-w이 섹션을 시스템 클립보드에 복사하세요.
  4. C-ytmux에 붙여넣고 C-v웹 브라우저와 같은 다른 일반 애플리케이션에 붙여넣습니다.

답변2

Tmux 2.4의 경우 (이후이번에 제출하세요), 바인딩 구문이 변경되었습니다. 다른 말로 표현하자면이 Github 댓글변경 사항에 대한 간략한 요약:

  1. -t사용. . . 교체-T
  2. vi-<name>사용. . . 교체<name>-mode-vi
  3. 명령 접두어는 다음과 같습니다.send-keys -X

나는 가지고있다:

bind-key -n -t vi-copy Enter copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'
bind-key -n -t vi-copy MouseDragEnd1Pane copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'

다음과 같이 변경해야 합니다.

bind-key -n -T copy-mode-vi Enter send-keys -X copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'
bind-key -n -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe 'xclip -i -sel p -f | xclip -i -sel c'

~에서변경 로그:

주요 테이블이 크게 변경되었습니다. 모드 키 테이블은 더 이상 기본 키 테이블과 분리되지 않습니다. 모든 모드 키 테이블과 키 바인딩 및 바인딩 해제를 위한 -t 플래그가 제거되었습니다.

emacs-edit, vi-edit, emacs-choose 및 vi-choose 테이블은 명령 프롬프트 및 선택 모드에서 고정 키 바인딩으로 대체되었습니다. 모드 키 및 상태 키 옵션은 그대로 유지됩니다.

emacs-copy 및 vi-copy 테이블은 copy-mode 및 copy-mode-vi 테이블로 대체되었습니다. send 키에 명령을 보내려면 -X 및 -N 플래그를 사용하십시오. 따라서 다음과 같습니다:

bind -temacs-copy C-Up scroll-up
bind -temacs-copy -R5 WheelUpPane scroll-up

이 되다:

bind -Tcopy-mode C-Up send -X scroll-up
bind -Tcopy-mode WheelUpPane send -N5 -X scroll-up

이러한 변경을 통해 전체 명령 파서(명령 시퀀스 포함) 및 명령 세트를 사용할 수 있습니다. 예를 들어 이제 사용자 정의 명령 프롬프트 대신 검색, 점프 등에 편집 및 기록이 포함된 일반 명령 프롬프트가 사용됩니다. 이제 기본 Cr 바인딩은 다음과 같습니다.

bind -Tcopy-mode C-r command-prompt -p'search up' "send -X search-backward-incremental '%%'"

send -X는 copy-pipe-and-cancel과 같은 몇 가지 새로운 명령도 제공합니다.

답변3

다른 답변도 도움이 될 수 있지만 제가 한 방법은 다음과 같습니다.

  • Shift 키를 누른 채 커서로 텍스트를 선택하세요.
  • Ctrl + Shift + C는 텍스트를 클립보드에 복사합니다.

답변4

이것은 -temacs-copy오타가 아닙니다. 선행 대시는 이것이 bind-keys명령에 대한 옵션(및 해당 옵션에 대한 인수)임을 의미합니다. 원하는 경우 동일합니다 -t emacs-copy.

복제 모드는 "일반 모드" 1 와 다른 바인딩 및 명령 세트를 사용합니다 . 이 copy-pipe명령은 대체 "모드" 바인딩 테이블에서만 사용할 수 있습니다. 이면 복제 모드 mode-keys에서 emacs이 테이블을 사용하므로 Mw를 이 테이블 emacs-copy에 바인딩해야 합니다 .copy-pipe

bind-key -temacs-copy M-w copy-pipe "xclip -i -selection clipboard"

"접두사가 없는" 바인딩을 너무 많이 생성하지 않도록 주의하세요. 내부에서 실행되는 프로그램에서 이러한 키 바인딩을 입력하기 어렵게 만듭니다.멀티플렉서(예를 들어 tty 모드 인스턴스에서 Cy를 입력하려는 경우이맥스안으로 달려가다멀티플렉서). 가 있는 일부 키는 언제든지 (접두사)바인딩할 수 있지만 send-keys C-y자주 필요한 경우 입력이 더 번거로울 수 있습니다.


1 이동 및 편집 명령만 사용할 수 있습니다. 이러한 명령은 in을 제외한 인수를 허용하지 않습니다 copy-pipe(맨 페이지의 의미는 "in 명령이 인수를 허용합니다"라고 되어 있습니다. "in"은 오타이거나 편집 오류일 수 있습니다).

관련 정보