Como dar conta a um comando de linha de comando do Vim (como: insert,: normal, etc)

3

No Vim, como provavelmente todos vocês sabem, é possível dar uma contagem aos comandos em "modo normal", precedendo-os com um número.

Como, por exemplo, 4dd , que excluirá 4 linhas.

Eu estou querendo saber se existe uma maneira de passar uma contagem para um comando de linha de comando vim (um comando que começa com dois pontos) para repeti-lo várias vezes.

Algo como 2:normal oHi! para repetir o comando normal oHi! 2 vezes.

Existe uma maneira de fazer algo assim dentro do Vim?

    
por wefwefa3 10.06.2015 / 21:20

1 resposta

3

Muitos: -commandos aceitam uma contagem como argumento. Por exemplo:

:delete 4

Eliminaria quatro linhas, começando com a linha em que o cursor está.

Alguns: -commandos levam uma contagem antes do nome do comando:

:2next

Edite o segundo arquivo seguinte na lista de argumentos.

No entanto, o comando :normal não aceita uma contagem em nenhum dos formulários. Você teria que envolvê-lo em um loop:

for i in range(1,2)
    normal oHi!
endfor

E, claro, você poderia criar um comando definido pelo usuário que fizesse o que você queria:

command -count=1 -nargs=+ Normal for i in range(1,<count>) | exe 'normal ' . <q-args> | endfor

O -count=1 define a contagem padrão como 1 e você invoca a segunda maneira:

:2Normal oHi!
    
por 11.06.2015 / 02:21