나는 마침내 탐색을 위해 화살표 키를 버리기로 결정했다 hjkl
. 내가 사용 Vim hardmode
화살표 키를 비활성화 플러그인을.
탐색에 익숙해졌지만 삽입 모드에서 탐색이 갑자기 불가능하다는 것이 밝혀졌습니다.
이것에 대한 해결책이 있습니까? (기존 삽입 모드는 해결책이 아닙니다).
나는 마침내 탐색을 위해 화살표 키를 버리기로 결정했다 hjkl
. 내가 사용 Vim hardmode
화살표 키를 비활성화 플러그인을.
탐색에 익숙해졌지만 삽입 모드에서 탐색이 갑자기 불가능하다는 것이 밝혀졌습니다.
이것에 대한 해결책이 있습니까? (기존 삽입 모드는 해결책이 아닙니다).
답변:
많은 옵션이 있습니다. 하나의 옵션이며 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하고 몇 가지 작은 움직임을 만들어 일반 모드로 돌아가는 것입니다. 당신은 오히려 그렇게하지 않을 것이라고 언급했지만 때로는 이것이 가장 효율적인 방법입니다.
아마도 다른 접근 방식이있을 수도 있지만 이것들은 내가 좋아하는 방법입니다.
<c-o>gk
하고 <c-o>gj
대신 <Up>
과 <Down>
. 왜 그런 겁니까?
gk
와 gj
시각적으로 줄을 올리거나 내립니다.
noremap <Up> <NOP>
...) . HJKL을 배우기 위해 일반 모드에서 충분한 시간을 보내지 만 필요할 때 항상 있습니다. 또는 적어도 이것이 항상 꺼져 있거나 항상 켜져있는 사이에 편안한 중간 지대라는 것을 알았으며 다른 키 (창 사이를 이동하기 위해 Ctrl-HJKL과 같은 많은 사람들)를 다시 매핑 할 필요가 없습니다.
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
사람은 명령 모드에 적용됩니다. (이 매핑을 사용하지 않은 채 명령 모드 기록을 탐색하는 방법이 있는지 잊어 버릴 정도로 오랫동안이 매핑을 사용해 왔습니다.)
(편집 : 다른 대답이 이미이 가능성을 언급 한 것을 보았습니다. 여전히 실제 매핑 명령을 보는 것이 도움이 될 수 있습니다.)
... 가장 좋은 선택은를 누르고 ESC
이동하고 다시 삽입 모드로 돌아가는 것입니다.
매핑이 좋아 생성에 아무 소용 없다 <C-h>
당신이 스마트 움직임을 달성하기 위해 동일한 키를 여러 번 칠 생각하지 않을 Vim은 사용자로 ... 왼쪽으로 이동 한 후 그것을 여러 번 타격 시작은.
( ESC
키가 손가락에 가까이 있지 않으면 매핑을 만드는 것이 좋습니다.)
... <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
적은 양의 텍스트 나 단어를 수정해야하는 경우을 사용할 수 있습니다 <Ctrl-O>h/j/k/l
.
<Ctrl-O>
해당 명령에 대해서만 일반 모드로 돌아간 다음 다시 삽입 모드로 전환하므로 약간의 이동을 위해 일반 모드로 전환해야하는 경우 약간의 키 누름을 저장합니다.
참조 : 1. http://vim.wikia.com/wiki/Use_Ctrl-O_instead_of_Esc_in_insert_mode_mappings