Ctrl-W없이 Vim에서 분할 작업을하려면 어떻게해야합니까?


24

터미널은 터미널 탭을 닫기위한 바로 가기이므로 Ctrl+ 를 입력 할 수 없습니다 W.

분할 작업을 좋아하지만을 사용하지 않고는 그렇게 할 수 없습니다 C-W. 나는 그들 사이를 전환 할 수 있기 때문에, 탭을 사용하라고 강요 gt, gT또는 #gt# 숫자입니다,하지만 난 한 번에 하나 개의 파일의 내용을 볼 수 나는 분할보다는이 덜 편리하게 찾을 수 있습니다.

mouse=a터미널에서 지원하지 않기 때문에 사용할 수 없습니다 .

Ctrl+ W콤보를 사용 하지 않고 Vim에서 스플릿으로 작업하려면 어떻게 해야합니까?


1
매핑 사용 wincmd 예를 들어 다음 :nmap wj :wincmd j<cr>과 같이 매핑 할 수 있습니다. CTRL-W j(아래 창으로 이동) 과 동일하게 작동 합니다. :help wincmd
Alex Kroll

@AlexKroll 왜 답변으로 게시하지 않습니까? :-)
Martin Tournoij 2016 년

1
@Carpetsmoker이 문제에 대한 완전한 설명은 아닙니다. CTRL-W j카운터와 함께 작동합니다 (현재에서 n 번째 창으로 이동). 내 솔루션은 그렇지 않습니다.
Alex Kroll

2
나는 보통 이런 조언을 좋아하지 않지만 다른 터미널을 찾을 것입니다. <C-W>(Vim의 많은 장소뿐만 아니라 bash에서도) 바로 가기에 너무 유용합니다. 터미널에서 어떤 다른 키 바인딩을 사용하는지 궁금합니다 <C-T>. 최소한 터미널에서 구성 가능한지 여부를 조사했습니다.
tommcdo 2016 년

답변:


23

<C-w>예를 들어 다음과 같이 다른 조합으로 다시 매핑 할 수 있습니다 .

:nnoremap <C-e> <C-w>

이제 사용할 <C-e>수 있으며을 누른 것처럼 작동합니다 <C-w>.

기본 <C-e>매핑 을 덮어 씁니다 (스크롤 다운). Vim은 이미 키보드의 모든 키를 사용하며이를 방지하는 유일한 방법은 "접두사"처럼 작동하는 리더 키를 사용하는 것입니다.

:nnoremap <Leader>w <C-w>

을 다시 매핑하지 않은 경우 <Leader>이제 \w(서로) 사용할 수 있습니다 . CTRL + 키 조합을 좋아하지 않기 때문에 실제로 이것을 선호합니다.

참조 <리더> 무엇입니까? 그리고 어떻게 <리더>로 설정되어 무엇을 찾을 수 있습니까? <Leader>를 다시 매핑 할 수 있습니까? .


내 문제를 해결합니다. 내 vimrc에 매핑을 추가하고 문제없이 조금 테스트했습니다.
Mateon1

13

약어를 입력하는 것이 더 쉽기 때문에 실제로 :wincmdCtrl+ 보다 자주 사용 W합니다 :winc.

예를 들어 Ctrl+ 와 동등한 값 W L:winc l입니다.


7

내에서 다음과 같은 다시 매핑을 설정했습니다 .vimrc.

nmap <C-h> <C-w>h
nmap <C-j> <C-w>j
nmap <C-k> <C-w>k
nmap <C-l> <C-w>l

이제 Ctrl+h왼쪽 창 Ctrl+l으로 이동하거나 오른쪽 창으로 이동하는 등의 작업을 수행 할 수 있습니다. Vim의 일반적인 탐색에 논리적으로 맞는 것 같습니다.


4
터미널에서 Ctrl + h를 매핑하는 것은 항상 백 스페이스 키이므로 항상 작동하지는 않습니다. 참조 이 답변 하고 이 질문을 .
Martin Tournoij

nnoremap <cr> <c-w>w리턴 키는 일반 모드에서 많이 사용되지 않으므로을 사용할 수도 있습니다 . 그런 다음 분할을 쉽게 순환 할 수 있습니다.
희망

5

분할을 처리하기 위해 실제로 매우 편리한 하위 모드 플러그인 을 사용합니다 . 새 키 바인딩을 정의하는 새 모드 (일반 모드, 시각적 모드, 삽입 모드 등의 "모드")를 만들 수 있습니다. .

Ctrl+w이제 더 이상 사용할 필요가 없으며 새로운 모드에있을 때 모든 키를 자유롭게 바인딩 할 수 있습니다. 더 이상 "아무런 의미로 키 조합을 찾을 수없고 아직 맵핑되지 않은 키 조합을 찾을 수 없습니다" "

일반 플러그인 관리자를 사용하여 플러그인을 설치할 수 있으며 다음은 영감을주는 일부 구성입니다.


WindowsMode스플릿을 조작 하는 새로운 모드를 만들었습니다 .

call submode#enter_with('WindowsMode', 'n', '', '<Leader>k', ':echo "windows mode"<CR>')
call submode#leave_with('WindowsMode', 'n', '', '<Leader>')

내가 가진 모드에서 입력하는 것이이 라인 수단 Leaderk과 함께 나는 모드를 종료 Leader내가 공격 후 : Leaderk나는 것 명중 모든 키를 :

  • 이 모드에서 매핑을 정의하지 않은 경우 아무 작업도 수행하지 마십시오
  • 이 모드에서 매핑하기로 결정한 작업을 수행하십시오 (나머지 답변 참조).
  • 맞으면 정상 모드로 돌아갑니다 Leader

WindowsMode이 라인 에 들어가면 다음 hjkl과 같은 분할 을 탐색하십시오.Ctrl+whjkl

" Change of windows with hjkl
call submode#map('WindowsMode', 'n', '', 'j', '<C-w>j')
call submode#map('WindowsMode', 'n', '', 'k', '<C-w>k')
call submode#map('WindowsMode', 'n', '', 'h', '<C-w>h')
call submode#map('WindowsMode', 'n', '', 'l', '<C-w>l')

이 줄을 사용하여 창을 /and 로 나누었습니다 !.

" split windows with / and !
call submode#map('WindowsMode', 'n', '', '/', '<C-w>s')
call submode#map('WindowsMode', 'n', '', '!', '<C-w>v')

그리고 q분할을 닫습니다.

call submode#map('WindowsMode', 'n', '', 'q', '<C-w>c')

다음과 같이 분할을 이동하십시오 Ctrlhjkl.

call submode#map('WindowsMode', 'n', '', '<C-j>', '<C-w>J')
call submode#map('WindowsMode', 'n', '', '<C-k>', '<C-w>K')
call submode#map('WindowsMode', 'n', '', '<C-h>', '<C-w>H')
call submode#map('WindowsMode', 'n', '', '<C-l>', '<C-w>L')

Vim-submode를 사용하면 많은 강력한 작업을 수행 할 수 있습니다 . 자세한 내용 은 문서 를 참조하십시오.


편집 Window 하위 모드의 다른 접근 방식이 여기 에 설명되어 있습니다 . 저자가 사용하는 방법이 질문에 대답하는 데 훨씬 더 가깝다고 생각합니다. 여기서 새 모드를 만드는 데 사용되지만 모든 <c-w>something매핑을 하위 모드에서 동일한 키로 사용할 수 있습니다.

" Go through every letter
for key in ['a','b','c','d','e','f','g','h','i','j','k','l','m',
\           'n','o','p','q','r','s','t','u','v','w','x','y','z']
  " maps lowercase, uppercase and <C-key>
  call submode#map('window', 'n', '', key, '<C-w>' . key)
  call submode#map('window', 'n', '', toupper(key), '<C-w>' . toupper(key))
  call submode#map('window', 'n', '', '<C-' . key . '>', '<C-w>' . '<C-'.key . '>')
endfor

" Go through symbols. Sadly, '|', not supported in submode plugin.
for key in ['=','_','+','-','<','>']
  call submode#map('window', 'n', '', key, '<C-w>' . key)
endfor

이 방법은 모든 매핑 <c-w>lowerCaseKey, <c-w>upperCaseKey, <c-w><c-Key>와 매핑 <c-w>=_+-<>접두사없이 모든 창 모드에서 액세스 할 수 있습니다<c-w>

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