Vim Navegação no modo de inserção efetivamente

4

Eu sei que no modo de inserção eu poderia navegar pelo documento usando as teclas de seta ou usando Ctrl-o para escapar do modo de inserção temporariamente. Minha pergunta é: existe alguma outra maneira de navegar pelos documentos em vez de usar essas chaves ou fugir temporariamente?

Obrigado.

OK pessoal, acabei de encontrar uma solução para minha própria pergunta na qual eu uso imap para mapear chaves no Vim no modo de inserção.

 imap <C-n> <Down>
 imap <C-p> <Up>
 imap <C-@> <C-Space>
    
por petwho 07.01.2013 / 07:40

4 respostas

4

Outro upvote para o comentário de @ garyjohn, aqui.

Ao seguir esse caminho, você certamente está atirando no próprio pé. Eu vejo pelo menos dois grandes erros em sua abordagem.

  • Como @garyjohn escreveu, você está "lutando" contra o aspecto mais crucial do Vim. A modalidade está no centro de tudo o que torna o editor de texto incrível que é. Se você considerar sua curva de aprendizado proverbialmente íngreme, ativamente indo contra o seu design não vai te levar longe.

  • Como muitos outros, você concentra seu esforço "emburrecer Vim" em movimentos como <up> , <down> e amigos. O Vim tem muito melhor maneiras de se movimentar entre buffers: wWeEbB/?tTfF{}[] e assim por diante. Todos esses movimentos lhe dão super poderes. Todos esses movimentos dependem da modalidade de uma forma ou de outra.

    Rejeitar essas ferramentas incrivelmente úteis é um erro muito ruim por si só. Remapear os dois seria muito difícil e totalmente inútil.

    FYI, quando comecei o Vim, passei meses tentando transformá-lo em um clone do TextMate. Tentar criar mapeamentos de modo de inserção para tudo foi provavelmente um dos esforços mais frustrantes de toda a minha carreira. No entanto, aprendi duas coisas no processo:

    1. o meu amado TextMate foi seriamente fraco em comparação com o Vim, por isso não fazia absolutamente sentido emburrecer o Vim, e…

    2. modos de enlouquecer regra.

Aceite a filosofia do Vim em vez de rejeitá-lo. Ou rejeite-o e use o Sublime Text 2, para o que nos interessa.

    
por 07.01.2013 / 09:26
3

Concordo com @garyjohn - além disso, Ctrl - n e Ctrl - p são coisas que eu uso para autocompletar ou concluir a ortografia automática - eu não iria mapeá-los para outra coisa. De qualquer forma, Ctrl - w apagará uma palavra antes do cursor, e Ctrl - u apagará tudo antes do cursor, pelo menos você poderia usar esses atalhos (que também funcionam em um shell).

    
por 07.01.2013 / 08:28
3

Apenas para martelar esta casa: Se você ficar no modo de inserção por muito tempo, você está fazendo algo errado. O padrão em Vi (m) é: Movimente-se no modo normal. Faça inserções curtas (uma palavra aqui, uma frase lá). Ou manipule o texto com comandos Ex como :substitute . Repita.

Tente ensinar a si mesmo a deixar o modo de inserção (via <Esc> , esperançosamente acessível em seu teclado) assim que o fluxo de caracteres vindos do seu cérebro começar a escorrer. A próxima inserção é apenas um i / a ausente.

    
por 07.01.2013 / 10:24
0

Se você quiser mover mais de uma ou duas posições ...

... a melhor opção é acessar ESC , se movimentar e voltar ao modo de inserção novamente.

Não adianta criar mapeamentos como <C-h> para mover para a esquerda e começar a usá-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 chave ESC não estiver perto dos seus dedos, seria uma boa opção criar um mapeamento para ela.)

Se você quiser mover ONE ou DOIS posições no modo de inserção ...

... uma boa opção seria definir alguns movimentos usando sua chave <Leader> :

(uso a , como <Leader> chave, pois é uma sensação próxima e confortável para meus dedos)

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
    
por 24.06.2018 / 04:55

Tags