키를 누른 상태에서 매핑을 반복하는 방법


11

내에서이 .vimrc쉽게 분할 창 크기를 조정하는 몇 가지 간단한 매핑 :

noremap <Leader><UP>    <C-w>+
noremap <Leader><DOWN>  <C-w>-

그것은 꽤 잘 작동하지만 예를 들어 10 줄의 창 크기를 조정하려면 Leader+ UP10 번 눌러야 합니다.

키를 누른 상태에서이 매핑을 어떻게 반복 할 수 있습니까? 내가 원하는 것은 Leader+를 누를 때 UP매핑이 한 번 적용된 다음 짧은 지속 시간이 지나면 키를 누르고있는 동안 다시 한 번 적용됩니다.

참고 :<C-w>+ 카운트 를 접두어 로 사용할 수 있다는 것을 알고 있으며 매핑을 사용하기 전에 매핑에서 하드 코딩하거나 단순히 수를 입력 할 수는 있지만 그렇게하고 싶지 않습니다.

참고 2 : 또한 창 크기를 조정하는 인기있는 매핑 +-여러 번 누르기 쉬운 키를 사용하는 것이지만 그 키를 사용하여 그렇게하지 않으려 고합니다.

답변:


14

당신은 ... Vim 하위 모드로 들어가보십시오 ! 귀하의 경우 다음과 같이하십시오.

call submode#enter_with('grow/shrink', 'n', '', '<leader><up>', '<C-w>+')
call submode#enter_with('grow/shrink', 'n', '', '<leader><down>', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<down>', '<C-w>-')
call submode#map('grow/shrink', 'n', '', '<up>', '<C-w>+')

이 방법은, 당신과 함께 서브 모드 입력 Leader-Up또는 Leader-Down당신은 단지 언론에해야합니다 - (도 / 성장 창이 한 번 수축되는) 다음과 UpDown/ 성장 창을 축소하기 위해, 당신은 서브 모드를 종료 할 때까지.

시간 종료 문제에 대해서는 도움말을 참조하십시오.

"disable submode timeouts:
let g:submode_timeout = 0

... 당신보다 다른 키를 누를 때까지 무기한으로 그 서브 모드에있을 게요 의미 Up또는 Down당신이 충돌, 또는 때까지 Esc.

Aaand, 내가 추천 할 다음 유용한 팁 :

" don't consume submode-leaving key
let g:submode_keep_leaving_key = 1

... 다른 키를 누를 때 다음 명령으로 바로 이동할 수 있습니다. 예를 들어를 누르면 :하위 모드가 종료 되고 명령 줄이 열립니다.


해결책을 시도했지만 작동하지 않는 것 같습니다. <kbd> 리더 </ kbd> + <kbd> UP </ kbd>를 누르면 메시지가 표시 --submode: grow/shrink --되고 창 크기가 한 줄씩 조정되지만 명령은 ' 반복. 나는의 4 combinaisons와 그것을 시도 g:submode_keep_leaving_key하고 g:submode_timeout내가 뭔가 잘못했다거나하지 않을 경우 0 또는 1로 나는 확실하지 않다. 나는 일반적으로 터미널에서 vim을 사용하고 있지만 지금은 Windows에서 gVim으로 만 테스트 할 수 있지만 변경 사항이 확실하지 않습니다.
statox

2
이 명령은 여전히 쳐야, 자동 반복되지 않습니다 Up또는 Down필요 (그러나 언론에 필요없이만큼 여러 번 자신을 Leader첫번째)
VanLaser

아, 이제 코드를 더 잘 이해합니다! 완벽하게 작동합니다!
statox

2
완벽한 답변과 놀라운 플러그인! (참고 : 위의 명령을에 추가하기 전에 vim-submode 플러그인 을 설치 해야합니다 ~/.vimrc.)
weibeld

1

winresizer , 히트 Ctrl- e멀리 크기를 조정!

일반 hjkl 키 (및 화살표 키)를 사용합니다.

크기를 "수락"하거나 "중지"할 수 있습니다.

또한 창을 바꾸는 이동 모드와 활성 창을 전환하는 초점 모드가 있습니다.

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