Vim move o cursor um caractere no modo de inserção sem as teclas de seta

8

Isso pode parecer um pouco exagerado, mas mudei para o vim e estou muito feliz com o fluxo de trabalho agora. Eu tento me disciplinar para não usar as setas do teclado, pois manter as mãos na tecla alfa o tempo todo é uma coisa tão grande quando escrevo. Então, quando eu preciso navegar eu saio do modo de inserção, movo no modo normal e volto no modo de inserção.

Há uma exceção em que isso é realmente mais prejudicial: uso clang complete com snippets e super tab , o que é ótimo. Exceto que toda vez que eu obtiver uma função auto completada após eu preencher os parâmetros, fico com o cursor antes de ) , então para continuar eu tenho que mover o cursor um caractere para a direita. Como você pode imaginar isso acontece muitas vezes .

As únicas opções que tenho (tanto quanto eu sei) são: Esc l a ou e não estou feliz com nenhum deles. O primeiro me faz acertar 3 chaves por apenas um simples movimento de cursor de 1 personagem, o segundo me faz mover minha mão para as setas. Uma terceira opção seria mapear CTRL-L ou smth para .

Então, qual é a melhor maneira de fazer isso?

//snippets (clang complete + supertab):
foo($'param1', $'param2')

//after completion:
foo(var1, var2|)
              ^ ^
              | |
     I am here  |
                 Need to be here

| indica a posição do cursor

    
por bolov 24.08.2014 / 12:26

2 respostas

5

Mapeie ) para pular o exisiting ) se for um parêntese de fechamento

inoremap <expr> )  strpart(getline('.'), col('.')-1, 1) == ")" ? "\<Right>" : ")"

Extraído de: link

Resposta antiga

:h i_CTRL-O executa um comando, retorna ao modo de inserção.

Ctrl-o l moverá um caractere para a direita e retornará ao modo de inserção.

Como alternativa, alguns dos plug-ins de suporte permitem que você apenas digite o colchete de fechamento ) e eles substituirão o existente.

    
por 24.08.2014 / 22:28
0

Digite o seguinte para encontrar as teclas de controle que são usadas no modo de inserção.

:help insert-index

ctrl-b não é usado, mas você pode querer sacrificar alguma outra chave.

imap <c-b> <right>

Isso funciona para mover o cursor para a direita um caractere. Ou mapeie alguns caracteres duplos.

imap jj <right>
    
por 25.08.2014 / 06:09

Tags