Eu finalmente decidi abandonar as setas do teclado para navegar em favor de hjkl
. Eu usei o Vim hardmode
plugin para desativar as teclas de seta.
Acostumei-me à navegação muito rápido, mas, de repente, a navegação no modo de inserção é impossível.
Existe alguma solução para isso? (o modo de inserção existente não é uma solução).
insert-mode
navigation
stdcall
fonte
fonte
Respostas:
Existem muitas opções que você tem. Uma opção, e a IMO, a mais segura e fácil, é parar de desativar as teclas de seta. Eu entendo por que muitos vimmers hardcore dizem coisas como
(Obviamente estou brincando) No entanto, há um objetivo para as teclas de seta. Eles são extremamente úteis para navegar:
No modo de inserção
Na linha de comando
Geralmente, quando as pessoas dizem para você não usar as teclas de seta, é porque elas querem que você reaprenda a navegação de uma maneira mais semelhante ao vim. Se você se sente confortável
hjkl
e usa principalmente as teclas de seta no modo de inserção, não há um bom motivo para se forçar a não usá-las.A opção 2 é remapear
ctrl-hjkl
para agir como teclas do cursor. Isso é bom porque você pode permanecer na homerow e se encaixa bem com a memória muscular que você já aprendeu a usarhjkl
no modo normal. De fato, é isso que eu faço . A principal desvantagem dessa abordagem é que pode ser difícil configurar no terminal vim porque<C-j>
produz umNUL
byte. Eu contorno isso usando Gvim. Não sei se existe ou não uma correção fácil para o console vim.A opção 3 é usar
<C-o>
para fazer pequenos movimentos no modo normal. Por exemplo, se você estiver digitandoe você percebe que esqueceu uma vírgula, em vez de fazer leftleftleftleftleftleft, você pode simplesmente fazer
<C-o>b<C-o>h
ou<C-o>2Fo
ou qualquer outra combinação de movimentos do modo normal que desejar.Claro, outra opção, e uma de que gosto muito é apenas usar Esc, fazer alguns pequenos movimentos antes de voltar ao modo normal. Você mencionou que prefere não fazer isso, mas às vezes essa é realmente a maneira mais eficiente.
Provavelmente também existem outras abordagens, mas essas são as que eu mais gosto que funcionaram para mim.
fonte
<c-o>gk
e em<c-o>gj
vez de<Up>
e<Down>
. Por que é que?gk
e suba e desçagj
visualmente uma linha, mesmo que a linha esteja quebrada.noremap <Up> <NOP>
...) . Você gasta tempo suficiente no modo normal para aprender HJKL, mas eles estão lá quando você precisar. Ou pelo menos, acho que esse é um meio termo confortável entre deixá-los sempre desligados ou sempre ativados, e não requer o remapeamento de outras teclas (muitas pessoas como Ctrl-HJKL para se mover entre os painéis).Eu gosto de usar a tecla Control para transformar as
hjkl
teclas de movimento em teclas de movimento "universais". Aqui está a parte relevante da minha.vimrc
:As
inoremap
instruções se aplicam ao modo de inserção, enquantocnoremap
as se aplicam ao modo de comando. (Estou usando esse mapeamento há tanto tempo que esqueci se há alguma maneira de navegar pelo histórico do modo de comando sem ele.)(Editar: vejo que a outra resposta já mencionou essa possibilidade. Ainda assim, pode ser útil ver os comandos de mapeamento reais.)
fonte
Pressione esce use hjkle wWbBquaisquer outras navegações que você gostaria de fazer. O ponto principal do modo difícil é fazer com que você aprenda a navegar com movimentos vim mais complexos. Faça pequenas edições e depois vá para um novo local, usando o modo normal.
Se você não quiser aprender a navegar mais rápido com o modo de hardware ativado, confira minha resposta em outra pergunta sobre o mesmo tópico.
fonte
Se você deseja mover mais de uma ou duas posições ...
... a melhor opção é acertar
ESC
, mover-se e voltar ao modo de inserção novamente.Não há sentido em criar mapeamentos como
<C-h>
mover para a esquerda e começar a pressioná-lo muitas vezes ... como usuário do vim, você não deve pressionar a mesma tecla várias vezes para obter um movimento inteligente.(Se a
ESC
chave não estiver próxima dos seus dedos, seria uma boa opção criar um mapeamento para ela.)Se você deseja mover uma ou duas posições no modo de inserção ...
... uma boa opção seria definir alguns movimentos usando sua
<Leader>
tecla:(Eu uso
,
como<Leader>
chave, uma vez que parece perto e confortável aos meus dedos)fonte
Se você precisar modificar apenas uma pequena quantidade de texto ou palavra, poderá usá-lo
<Ctrl-O>h/j/k/l
.<Ctrl-O>
leva você de volta ao modo Normal apenas para esse comando e o coloca de volta no modo de inserção, para economizar uma certa quantidade de pressionamentos de tecla, se você precisar entrar no modo normal para um pequeno movimento.Ref: 1. http://vim.wikia.com/wiki/Use_Ctrl-O_instead_of_Esc_in_insert_mode_mappings
fonte