Modo de inserção
Movimento
hjkl
Não obstante o que Pavel Shved disse - que provavelmente é mais aconselhável se acostumar com o Escmodo Insert - aqui está um exemplo de conjunto de mapeamentos para navegação rápida no modo Insert:
" provide hjkl movements in Insert mode via the <Alt> modifier key
inoremap <A-h> <C-o>h
inoremap <A-j> <C-o>j
inoremap <A-k> <C-o>k
inoremap <A-l> <C-o>l
Isso fará com que Alt+ hno modo Inserir passe um caractere para a esquerda, Alt+ jpara baixo e assim por diante, analogamente ao hjklmodo Normal.
Você precisa copiar esse código no seu arquivo vimrc para carregá-lo toda vez que iniciar o vim (você pode abri-lo digitando :new $myvimrc
começando no modo Normal).
Qualquer movimento no modo Normal
Como a Alttecla modificadora não está mapeada (para algo importante) por padrão, você pode puxar da mesma maneira outras funcionalidades (ou todas) do modo Normal para o modo Inserir. Por exemplo:
movendo para o início da palavra atual com Alt+ b:
inoremap <A-b> <C-o>b
inoremap <A-w> <C-o>w
(Outros usos Altno modo Inserir)
Vale ressaltar que pode haver usos melhores para a Altchave do que replicar o comportamento no modo Normal: por exemplo, aqui estão os mapeamentos para copiar de uma linha adjacente a parte da coluna atual até o final da linha:
" Insert the rest of the line below the cursor.
" Mnemonic: Elevate characters from below line
inoremap <A-e>
\<Esc>
\jl
\y$
\hk
\p
\a
" Insert the rest of the line above the cursor.
" Mnemonic: Y depicts a funnel, through which the above line's characters pour onto the current line.
inoremap <A-y>
\<Esc>
\kl
\y$
\hj
\p
\a
(Usei a \
continuação e o recuo da linha para aumentar a clareza - os comandos são interpretados como se estivessem escritos em uma única linha.)
Teclas de atalho incorporadas para edição
CTRL-H delete the character in front of the cursor (same as <Backspace>)
CTRL-W delete the word in front of the cursor
CTRL-U delete all characters in front of the cursor (influenced by the 'backspace' option)
(Não há teclas de atalho embutidas para movimento no modo Inserir.)
Referência: :help insert-index
Modo de linha de comando
Esse conjunto de mapeamentos disponibiliza os movimentos superiores Alt+ na linha de comando:hjkl
" provide hjkl movements in Command-line mode via the <Alt> modifier key
cnoremap <A-h> <Left>
cnoremap <A-j> <Down>
cnoremap <A-k> <Up>
cnoremap <A-l> <Right>
Como alternativa, esses mapeamentos adicionam os movimentos ao modo Inserir e ao modo de linha de comando de uma só vez:
" provide hjkl movements in Insert mode and Command-line mode via the <Alt> modifier key
noremap! <A-h> <Left>
noremap! <A-j> <Down>
noremap! <A-k> <Up>
noremap! <A-l> <Right>
Os comandos de mapeamento para puxar os comandos do modo Normal para o modo de linha de comando são um pouco diferentes dos comandos de mapeamento do modo de inserção (porque o modo de linha de comando não possui o Ctrl+ do modo de inserção O):
" Normal mode command(s) go… --v <-- here
cnoremap <expr> <A-h> &cedit. 'h' .'<C-c>'
cnoremap <expr> <A-j> &cedit. 'j' .'<C-c>'
cnoremap <expr> <A-k> &cedit. 'k' .'<C-c>'
cnoremap <expr> <A-l> &cedit. 'l' .'<C-c>'
cnoremap <expr> <A-b> &cedit. 'b' .'<C-c>'
cnoremap <expr> <A-w> &cedit. 'w' .'<C-c>'
Teclas de atalho incorporadas para movimento e edição
CTRL-B cursor to beginning of command-line
CTRL-E cursor to end of command-line
CTRL-F opens the command-line window (unless a different key is specified in 'cedit')
CTRL-H delete the character in front of the cursor (same as <Backspace>)
CTRL-W delete the word in front of the cursor
CTRL-U delete all characters in front of the cursor
CTRL-P recall previous command-line from history (that matches pattern in front of the cursor)
CTRL-N recall next command-line from history (that matches pattern in front of the cursor)
<Up> recall previous command-line from history (that matches pattern in front of the cursor)
<Down> recall next command-line from history (that matches pattern in front of the cursor)
<S-Up> recall previous command-line from history
<S-Down> recall next command-line from history
<PageUp> recall previous command-line from history
<PageDown> recall next command-line from history
<S-Left> cursor one word left
<C-Left> cursor one word left
<S-Right> cursor one word right
<C-Right> cursor one word right
<LeftMouse> cursor at mouse click
Referência: :help ex-edit-index
imap jk <Esc>
), para que você não precise interromper o impulso e estender a mão pelo teclado para pressionar a tecla.