삽입 모드의 탐색


20

나는 마침내 탐색을 위해 화살표 키를 버리기로 결정했다 hjkl. 내가 사용 Vim hardmode화살표 키를 비활성화 플러그인을.

탐색에 익숙해졌지만 삽입 모드에서 탐색이 갑자기 불가능하다는 것이 밝혀졌습니다.

이것에 대한 해결책이 있습니까? (기존 삽입 모드는 해결책이 아닙니다).


8
예 : 화살표 키를 사용하십시오 :-) 그것이 거기에 있습니다 ;-)
Martin Tournoij

@Carpetsmoker 화살표 키를 사용할 수 있으면 hjkl 대신에 사용할 것입니다.
stdcall

5
그러나 아이디어는 삽입 모드를 종료하는 것 (즉, 다른 명령과 함께 작은 삽입이 의도 된 목적으로 사용하는 것 )이 정확히 해결책이라는 것입니다. 내가 실수하지 않으면 도움말에서 그것을 보았고 링크를 찾으면 게시 할 것입니다. 화살표 키가 아니라 너무 많이 익숙한 것 같습니다.
Vee

<kbd> super </ kbd> + <kbd> j </ kbd>와 같은 바로 가기로 화살표를 사용하여 아래로 이동하도록 키보드를 바인딩 할 수 있습니다. <kbd> super </ kbd>는 모든 버튼 일 수 있습니다. 예를 들어 <kbd> Caps Lock </ kbd>은 매우 일반적입니다
ivanjermakov

답변:


26

많은 옵션이 있습니다. 하나의 옵션이며 IMO가 가장 쉽고 가장 쉬운 방법은 화살표 키 비활성화를 중지하는 것입니다. 많은 하드 코어 비머가

화살표 키를 다시 사용해서는 안됩니다! 화살표 키를 사용할 때마다 3 분의 시간이 낭비되고 강아지는 죽고 누군가는 Emacs로 전환합니다!

(분명히 농담입니다) 그러나 화살표 키의 목적이 있습니다. 탐색에 매우 유용합니다.

  • 삽입 모드에서

  • 명령 행에서

일반적으로 사람들이 화살표 키를 사용하지 말라고하면 탐색이보다 생생한 방식으로 다시 배우기를 원하기 때문입니다. 에 익숙 hjkl하고 화살표 키를 주로 삽입 모드로 사용하는 경우 화살표 키를 사용하지 말아야 할 이유가 없습니다.

옵션 # 2는 ctrl-hjkl커서 키처럼 작동 하도록 다시 매핑 하는 것입니다. 이것은 집에 머물 수 있기 때문에 좋으며, hjkl일반 모드에서 이미 배운 근육 기억력과 잘 어울립니다 . 실제로 이것은 내가하는 일 입니다. 이 접근 방식의 주요 단점 <C-j>NUL바이트를 생성 하기 때문에 터미널 vim에서 설정하기가 어려울 수 있다는 것 입니다. 나는 Gvim을 사용 하여이 문제를 해결합니다. 콘솔 vim에 대한 쉬운 수정이 있는지 여부를 알 수 없습니다.

옵션 # 3은 <C-o>작은 일반 모드 움직임을 만드는 데 사용 됩니다. 예를 들어, 입력하는 경우

Hello world!
     cursor^

당신은 당신이 대신하는 것보다, 쉼표를 잊었 실현 leftleftleftleftleftleft, 당신은 간단하게 할 수있는 <C-o>b<C-o>h하거나 <C-o>2Fo, 또는 당신 같은 일반 모드 운동의 다른 조합.

물론 다른 옵션과 내가 가장 좋아하는 옵션은을 사용 Esc하고 몇 가지 작은 움직임을 만들어 일반 모드로 돌아가는 것입니다. 당신은 오히려 그렇게하지 않을 것이라고 언급했지만 때로는 이것이 가장 효율적인 방법입니다.

아마도 다른 접근 방식이있을 수도 있지만 이것들은 내가 좋아하는 방법입니다.


2
흥미로운 - 난 당신이 사용에 유의 <c-o>gk하고 <c-o>gj대신 <Up><Down>. 왜 그런 겁니까?
Kyle Strand

4
줄을 감아도 @kylestrand gkgj시각적으로 줄을 올리거나 내립니다.
DJMcMayhem

4
나는 이것이 스스로 답을 보증하기에 충분하지 않다고 생각하지만, 화살표 키를 일반 모드 (HJKL을 배우도록 강요 한 것)에서 비활성화하고 다른 모든 모드에서 활성화하는 것을 좋아합니다 ( noremap <Up> <NOP>...) . HJKL을 배우기 위해 일반 모드에서 충분한 시간을 보내지 만 필요할 때 항상 있습니다. 또는 적어도 이것이 항상 꺼져 있거나 항상 켜져있는 사이에 편안한 중간 지대라는 것을 알았으며 다른 키 (창 사이를 이동하기 위해 Ctrl-HJKL과 같은 많은 사람들)를 다시 매핑 할 필요가 없습니다.
Itai Ferber

Btw, BASH 등은 vi 키 바인딩을 지원합니다. 이러한 매핑을 통해 <ESC>를 사용하고 hjkl을 사용하여 cmd 기록 (위 / 아래)을 진행하거나 현재 명령 (왼쪽 / 오른쪽)을 수정할 수 있습니다.
Rolf

9

Control 키를 사용하여 hjkl이동 키를 "범용"이동 키로 바꾸고 싶습니다 . 내 관련 비트는 다음과 같습니다 .vimrc.

" In insert or command mode, move normally by using Ctrl
inoremap <C-h> <Left>
inoremap <C-j> <Down>
inoremap <C-k> <Up>
inoremap <C-l> <Right>
cnoremap <C-h> <Left>
cnoremap <C-j> <Down>
cnoremap <C-k> <Up>
cnoremap <C-l> <Right>

inoremap그동안 문은, 삽입 모드에 적용 cnoremap사람은 명령 모드에 적용됩니다. (이 매핑을 사용하지 않은 채 명령 모드 기록을 탐색하는 방법이 있는지 잊어 버릴 정도로 오랫동안이 매핑을 사용해 왔습니다.)

(편집 : 다른 대답이 이미이 가능성을 언급 한 것을 보았습니다. 여전히 실제 매핑 명령을 보는 것이 도움이 될 수 있습니다.)


3

esc그런 다음 사용 hjklwWbB원하는 다른 탐색을 누르십시오 . 하드 모드의 요점은 더 복잡한 vim 모션으로 탐색하는 법을 배우는 것입니다. 일반 모드를 사용하여 작은 편집을 한 다음 새 위치로 이동하십시오.

하드 모드가 활성화 된 상태에서 더 빠르게 탐색하는 방법을 배우지 않으 려면 동일한 주제에 대한 다른 질문의 답변 을 확인하십시오 .


3

하나 또는 두 개 이상의 위치를 ​​이동하려면 ...

... 가장 좋은 선택은를 누르고 ESC이동하고 다시 삽입 모드로 돌아가는 것입니다.

매핑이 좋아 생성에 아무 소용 없다 <C-h>당신이 스마트 움직임을 달성하기 위해 동일한 키를 여러 번 칠 생각하지 않을 Vim은 사용자로 ... 왼쪽으로 이동 한 후 그것을 여러 번 타격 시작은.

( ESC키가 손가락에 가까이 있지 않으면 매핑을 만드는 것이 좋습니다.)

삽입 모드에서 하나 또는 두 개의 posistion을 이동하려면 ...

... <Leader>키를 사용하여 움직임을 정의하는 것이 좋습니다 .

(I 사용 ,으로 <Leader>는 가까이 편하지 Feel로를 이후 내 손가락에 키)

noremap! <Leader>h <left>   "move cursor left
noremap! <Leader>j <down>   "move cursor down
noremap! <Leader>k <up>     "move cursor up   
noremap! <Leader>l <right>  "move cursor right
noremap! <Leader>w <esc>wi  "move one word forward
noremap! <Leader>e <esc>ei  "move forward to the end of word
noremap! <Leader>b <esc>bi  "move one word backward

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