Repete o último comando do modo normal, incluindo movimentos, no Vim

22

No Vim, com . , posso repetir o último comando do modo normal; por exemplo:

dd.

exclui uma linha duas vezes.
Mas, se eu digitar

5j.

o cursor não se move 10 linhas para baixo. Como repito o último comando do modo normal, especialmente um movimento?

    
por juanpablo 29.05.2012 / 05:48

5 respostas

13

vim não faz isso infelizmente. O melhor que você pode fazer é instalar o plugin repmo.vim , que repete os comandos de movimento que têm um contagem.

    
por 29.05.2012 / 06:04
8

é factível mesmo em baunilha vim, mas a aplicabilidade depende do seu caso de uso, ou seja. com que frequência você precisará repeti-lo, já que requer mais algumas teclas para torná-lo repetível.

Opção 1: transforme-a em uma operação de modo de comando

usando a mudança de 5 linhas como exemplo, você pode fazer:

  1. insira :norm 5j , moverá o cursor para baixo 5 linhas
  2. use @: para repetir o movimento

:norm significa normal, qualquer sequência a seguir é considerada como sua digitação no modo normal

Opção 2: usar macro

  1. qa (armazene a macro no registro a , você pode escolher seu próprio registro como qb , qc )
  2. 5j
  3. q (terminar a gravação da macro)
  4. @a para repetir sua operação gravada (substitua a pelo nome de registro escolhido, por exemplo, @b , @c )
A macro requer mais poder espiritual para configurar, mas é mais repetível no sentido de que você pode armazenar várias operações em diferentes registros sem ser substituído pelas operações mais recentes.

    
por 13.12.2016 / 05:34
7

Na verdade, . repete a última alteração , não o último comando do modo normal. Como Paul disse, você precisará de um plugin para permitir que você repita os movimentos.

Veja " :help . ".

    
por 29.05.2012 / 06:55
3

Você pode repetir as alterações com . . Movimentos podem ser repetidos com o comando ; . Este comando parece ser novo e faz uma coisa semelhante ao script repmo.vim mencionado em outras respostas.

Por exemplo, para mover para o segundo próximo c , pressione 2fc . Então, para fazer isso novamente, basta digitar ; .

    
por 16.10.2014 / 19:23
0

Você pode selecionar as linhas que deseja alterar e executar o último comando de ponto normal

v5j .............. visual select next 5 lines
:'<,'>norm! .      normal mode execute over selection last command '.'
    
por 16.09.2018 / 17:37