vi 키와 함께 tmux를 사용하고 있으며 한 줄의 텍스트를 선택하거나 한 개의 창만있는 경우 복사 / 붙여 넣기가 제대로 작동합니다. 텍스트 블록 (여러 줄이지 만 전체 너비가 아님)을 선택하려고하면 문제가 발생합니다. vim 창이 여러 개 열려 있으면 모든 창에서 텍스트를 선택하게되며 필요한 것은 한 창에서만 텍스트를 선택하는 것입니다. 즉, vim의 시각적 선택과 같습니다.
이것이 가능합니까?
vi 키와 함께 tmux를 사용하고 있으며 한 줄의 텍스트를 선택하거나 한 개의 창만있는 경우 복사 / 붙여 넣기가 제대로 작동합니다. 텍스트 블록 (여러 줄이지 만 전체 너비가 아님)을 선택하려고하면 문제가 발생합니다. vim 창이 여러 개 열려 있으면 모든 창에서 텍스트를 선택하게되며 필요한 것은 한 창에서만 텍스트를 선택하는 것입니다. 즉, vim의 시각적 선택과 같습니다.
이것이 가능합니까?
답변:
이 게시물의 하단에서 .tmux.conf 파일로 이동해야하는 바인딩이 있는지 확인하십시오.
접두사 키가 Ca라고 가정합니다.
tmux에서 (1,1)에서 (2,2)까지 텍스트를 사각형으로 선택 하려면 :
space사각형을 선택하려면를 눌러야 합니다.
일반적으로 행을 선택하려면 복사 모드로 이동하고 v를 누르고 jkhl 키로 선택한 다음 y를 누르십시오.
내 .tmux.conf에 이러한 바인딩이 있습니다.
버전 2.4 이전 (2017 년 4 월 20 일) :
setw -g mode-keys vi
bind-key -t vi-copy 'v' begin-selection # Begin selection in copy mode.
bind-key -t vi-copy 'C-v' rectangle-toggle # Begin selection in copy mode.
bind-key -t vi-copy 'y' copy-selection # Yank selection in copy mode.
버전 2.4 이후 :
setw -g mode-keys vi
bind-key -T copy-mode-vi 'v' send -X begin-selection # Begin selection in copy mode.
bind-key -T copy-mode-vi 'C-v' send -X rectangle-toggle # Begin selection in copy mode.
bind-key -T copy-mode-vi 'y' send -X copy-selection # Yank selection in copy mode.
기본 사각형 토글 바인딩을 바인드 해제하는 것이 중요합니다.
unbind-key -t vi-copy v # Prior to version 2.4
unbind-key -T copy-mode-vi v
그렇지 않으면 새로운 'Cv'바인딩이 작동하지 않습니다.
참고 : .tmux.conf
여러 버전에서 작동 하는 단일 기능 을 사용하려면 이 질문을 참조하십시오 .
send
과 send-keys
. 나는에서 볼 superuser.com/questions/196060/selecting-text-in-tmux-copy-mode send-key
사용된다. 따옴표도 중요합니까?
선택 v
을 시작하기 전에 vi와 같은 시각적 블록을 선택할 수 있습니다 . 맨 페이지에서는이를 "사각형 토글"이라고합니다.
Lars가 지적했듯이 v
실제로 사각형 모드와 전체 라인 선택 모드 사이를 전환하여 원하는 것을 수행합니다. space
그리고 enter
그것을 새로운 선택을 시작하고 복사 각각 사용된다. 접두사를 사용하여 복사 모드를 [
시작한 다음 복사 한 선택을 사용하여 tmux 창에 붙여 넣습니다.]
선택을 시작하기 위해 tmux에서 v
와 같이 vim의 기능 때문에 혼란 스럽습니다 space
.
:list-keys -t vi-copy
tmux에서 발행 하면 전체 명령 테이블이 복사 모드로 표시됩니다.
bind-key -t vi-copy C-b page-up
bind-key -t vi-copy C-c cancel
bind-key -t vi-copy C-e scroll-down
bind-key -t vi-copy C-f page-down
bind-key -t vi-copy C-h cursor-left
bind-key -t vi-copy Enter copy-selection
bind-key -t vi-copy C-y scroll-up
bind-key -t vi-copy Escape clear-selection
bind-key -t vi-copy Space begin-selection
bind-key -t vi-copy $ end-of-line
bind-key -t vi-copy , jump-reverse
bind-key -t vi-copy / search-forward
bind-key -t vi-copy 0 start-of-line
bind-key -t vi-copy 1 start-number-prefix
bind-key -t vi-copy 2 start-number-prefix
bind-key -t vi-copy 3 start-number-prefix
bind-key -t vi-copy 4 start-number-prefix
bind-key -t vi-copy 5 start-number-prefix
bind-key -t vi-copy 6 start-number-prefix
bind-key -t vi-copy 7 start-number-prefix
bind-key -t vi-copy 8 start-number-prefix
bind-key -t vi-copy 9 start-number-prefix
bind-key -t vi-copy : goto-line
bind-key -t vi-copy ; jump-again
bind-key -t vi-copy ? search-backward
bind-key -t vi-copy B previous-space
bind-key -t vi-copy D copy-end-of-line
bind-key -t vi-copy E next-space-end
bind-key -t vi-copy F jump-backward
bind-key -t vi-copy G history-bottom
bind-key -t vi-copy H top-line
bind-key -t vi-copy J scroll-down
bind-key -t vi-copy K scroll-up
bind-key -t vi-copy L bottom-line
bind-key -t vi-copy M middle-line
bind-key -t vi-copy N search-reverse
bind-key -t vi-copy T jump-to-backward
bind-key -t vi-copy W next-space
bind-key -t vi-copy ^ back-to-indentation
bind-key -t vi-copy b previous-word
bind-key -t vi-copy e next-word-end
bind-key -t vi-copy f jump-forward
bind-key -t vi-copy g history-top
bind-key -t vi-copy h cursor-left
bind-key -t vi-copy j cursor-down
bind-key -t vi-copy k cursor-up
bind-key -t vi-copy l cursor-right
bind-key -t vi-copy n search-again
bind-key -t vi-copy q cancel
bind-key -t vi-copy t jump-to-forward
bind-key -t vi-copy v rectangle-toggle
bind-key -t vi-copy w next-word
bind-key -t vi-copy BSpace cursor-left
bind-key -t vi-copy NPage page-down
bind-key -t vi-copy PPage page-up
bind-key -t vi-copy Up cursor-up
bind-key -t vi-copy Down cursor-down
bind-key -t vi-copy Left cursor-left
bind-key -t vi-copy Right cursor-right
bind-key -t vi-copy C-Up scroll-up
bind-key -t vi-copy C-Down scroll-down
다른 답변 중 어느 것도 문제에 대한 최적의 해결책을 제시하지 못하기 때문에 나는 괴로움의 위가 아닙니다.
스페이스를 누르지 않고 Vim에서와 같은 방식으로 블록 선택을 수행 할 수있는 방법이 있습니다. 근육 기억에 뿌리를 둔 간단한 Ctrl-V.
.tmux.conf를 편집해야하지만 (vi-mode를 사용하면 이미 그렇게합니다) tmux <2.4에서 작동하는지 확실하지 않습니다.
이것을 .tmux.conf에 추가하여 Vim 선택 및 yank 바인딩을 복제하십시오.
# set vi-mode
set-window-option -g mode-keys vi
# keybindings
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle \; send -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
# comment the preceding line and uncomment the following to yank to X clipboard
# bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"
선택 모드를 시작하고 선택을 시작하려는 위치로 이동하십시오. 이제 v
규칙적인 (문자 별, 줄 단위) 선택을 <C-v>
시작하고 블록 선택을 시작하고 V
(shift-v)는 행 선택을 시작합니다. 선택 유형에 관계없이 y
tmux 페이스트 버퍼로 넘어갑니다 (또는 X 클립 보드, 위의 코드 주석 참조).
Vim과 동일합니다.
편집 : 소스 코드를 확인한 후 답변을 완전히 다시 작성했습니다.
나는 이것이 이것이 효과가 없기 때문에 이것이 가능하지 않다고 생각했지만, 다른 대답은 v
이것에 대한 올바른 열쇠가되는 것에 대해서는 맞지만, 특히 vim에 익숙한 경우 이것을 사용하는 방법은 분명하지 않습니다.
또한 v
구속력이 있었기 때문에 나에게는 효과가 없을 것입니다. 나는 begin-selection
이 아이디어를 다른 곳에서 맹목적으로 복사하여 캐릭터 현명한 선택을 시작하는 vim 방법을 모방해야합니다. 블록 선택.
$ tmux -V
tmux 1.9a
$ tmux list-keys -t vi-copy | grep " v "
bind-key -t vi-copy v begin-selection # suppressed my block selection mode
일단이 바인딩을 제거하면 (내 줄을 주석 처리하고 .tmux.conf
tmux를 다시 시작하여) 작동하기 시작했지만 vim과 동일하지 않기 때문에 여전히 혼란 스럽습니다.
기본 바인딩을 사용하면 다음과 같이 작동합니다.
setw -g mode-keys vi
에서 tmux를 실행하고 있는지 확인하십시오 .tmux.conf
.C-a [
복사 모드를 시작하려면 입력v
Space
선택을 시작하려면 입력v
다시 누르면 선택이 문자 별 선택으로 또는 그 반대로 전환 될 수 있습니다.v
를 누르기 전에 를 입력 할 필요는 없습니다 Space
. Space
먼저 문자 별 선택을 시작한 다음을 눌러 v
사각형 선택 모드로 전환 할 수 있습니다.
그것은 상당히 다르다 정력에 있다는 점에서 TMUX 두 개의 문자를 입력 할 수 있습니다 Space
및 v
직사각형 선택 모드에 들어갈. vim에서는을 입력하기 만하면됩니다 Ctrl-V
.
또한 vim에서 v
블록이 아닌 문자 별 선택을 시작합니다.
안타깝게도 tmux ( Shift-v
vim) 에는 줄 단위 선택 모드가없는 것 같습니다 .
편집 : Tmux 버전 2.0이 라인 단위 선택 모드를 제공하는 것 같습니다 Shift-v
(아직 시도하지 않았습니다!)
Shift-v
2015 년 3 월 2.0 릴리스) 최근 Tmux에만 추가 되었기 때문에 믿기 어려울 것입니다. 아마도 당신과 나는 선 선택에 대해 이야기 할 때 두 가지 다른 것에 대해 이야기하고 있습니다. VIM의 3 가지 선택 모드 ( v
, Shift-v
및 Ctrl-v
) 와 비교하십시오 .
v
선택은 현명하다. 나는 버전 1.9a에 있으며 vim과 같은 선 선택이 없습니다. 따라서 버전 2.0에서는 vim이 가지고있는 정확한 세 가지 모드가 tmux에서도 가능합니다.