나는 최신 버전의 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
?)
어쨌든 내가 하고 싶은 일은 다음과 같다.
복사:
- 복사 모드 시작
- Emacs 탐색 명령을 사용하여 복사하려는 텍스트로 이동합니다(예:
C-f
커서 를 이동하려면 , , ,C-b
등M-f
) .M-b
C-a
C-e
접두사 없음그들 중 누구에게나. - 선택한 텍스트를 클립보드에 복사하려면 다음 명령을 사용하십시오
M-w
.접두사 없음누구나)
반죽:
- 나는
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"
prefix+[
복사 모드 시작- 마우스로 콘텐츠 선택(길게 누르기)
M-w
이 섹션을 시스템 클립보드에 복사하세요.C-y
tmux에 붙여넣고C-v
웹 브라우저와 같은 다른 일반 애플리케이션에 붙여넣습니다.
답변2
Tmux 2.4의 경우 (이후이번에 제출하세요), 바인딩 구문이 변경되었습니다. 다른 말로 표현하자면이 Github 댓글변경 사항에 대한 간략한 요약:
-t
사용. . . 교체-T
vi-<name>
사용. . . 교체<name>-mode-vi
- 명령 접두어는 다음과 같습니다.
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"은 오타이거나 편집 오류일 수 있습니다).