Eu quero me ensinar a usar hjkl mais do que usar as setas do teclado para permanecer na linha inicial. E sim, estou ciente de que não se deve usar o hjkl como as principais teclas de navegação. No entanto, meus hábitos são bastante fortes e eu nem percebi que isso fez o movimento da mão nas teclas de seta e eu quero desaprender.
Para acabar com esse hábito: Como posso desativar as teclas de seta para ser forçado a usar o hjkl ou algum outro método de navegação?
Como bônus, seria útil se ainda houvesse uma mensagem de Dont't use this!
que não é obrigatória. Se eles não funcionarem, será confuso o suficiente para eu repensar meus hábitos.
key-bindings
cursor-movement
cursor-motions
k0pernikus
fonte
fonte
w
para a próxima palavra,}
para o próximo parágrafo,n
para a próxima correspondência de resultados de pesquisa,fz
para a próxima ocorrênciaz
na linha atual etc.) do que mover mais granularmente por caracteres únicos. Eu definitivamente concordo com isso. No entanto, HJKL é definitivamente melhor do que as setas do teclado, pois você não precisa mover as mãos da linha de casa. Frequentemente, digito algo comojA
, que é muito mais rápido do que<Down>A
e não é realmente superável por nenhum movimento.Respostas:
Você pode instalar o plug-in hardmode e no seu
.vimrc
put inSe você não quiser usar um plug-in, o uso (que pode ser uma escolha melhor, como você começa a personalizar tudo você mesmo!)
nnoremap
,vnoremap
Einoremap
em<Left>
,<Right>
,<Up>
,<Down>
,<PageUp>
e<PageDown>
, por exemplo:fonte
<nop>
se você quiser desativar o mapa de teclado completo:nnoremap h <nop>
.Caso você ou alguém que esteja lendo este tópico, queira apenas desativar os movimentos das teclas sem o aviso de texto, insira as seguintes linhas em .vimrc
Os comandos desativarão apenas o movimento das teclas no modo normal. Eles ainda funcionam no modo de inserção. Se você usar o inoremap, o movimento da seta também será removido do modo de inserção.
Este tópico bastante popular trata das diferenças entre noremap, nnoremap, inoremap, etc: Remapeando no Vim
A idéia geral do remapeamento é assim:
Portanto, nos outros exemplos dados, você remapeará o comando esquerdo para um prompt de texto que, aliás, remove a ação de mover o cursor. O exemplo que dei acima simplesmente refaz as ações para nada, ao invés de outra coisa. Considere remover, em vez de substituir, a funcionalidade vim.
fonte
Você pode adicionar isso ao seu
.vimrc
para desativar as teclas de seta nos modos Comando, Inserir, Normal e Visual:Nota: faça o checkout
:help map-overview
para obter mais detalhes sobre os diferentes tipos de mapeamentofonte
noremap ... ...
(no modo normal, visual, de seleção e pendente do operador) enoremap! ... ...
(no modo de inserção e linha de comando).noremaps
seria útil para alguém que queira personalizar quais modos são afetados