Repete o enésimo último comando no vim

13

Tenho notado que o vim pode ser bastante intuitivo, mas estou tendo problemas para encontrar uma maneira de repetir o segundo para o último comando (ou terceiro a último, quarto a último, etc.). Digitando . no modo normal, ele repetirá o último comando. Pressionar 3. repetirá o último comando três vezes.

Digamos que eu digite oHello<Esc> then A, World!<Esc> . Eu agora obtenho

Hello, World!

na tela. Agora, digamos que eu queira pegar

Hello, World!
Hello
Hello
Hello

sem digitar Hello. O vim armazena o histórico além de um comando, então eu poderia digitar algo como 3,2. (ou seja, repetir o segundo para o último comando três vezes)?

    
por redbmk 18.04.2012 / 01:35

2 respostas

8

Não, o comando . em vim não tem histórico, nem há qualquer tipo de histórico de repetição para comandos do modo normal que conheço. Para o menor número de pressionamentos de tecla, eu recomendaria 4oHello<Esc>3jA, World<Esc> . Se você já tiver feito oHello<Esc>A, World<Esc> , poderá seguir isso com uyy<Ctrl-r>3p .

    
por 18.04.2012 / 03:31
3

Existe um plugin chamado RepeatLast.vim que faz o que você quiser, mas com um custo: o seu vim está sempre no modo macro de gravação. Você pode instalá-lo com o gerenciador de pacotes que você está usando como qualquer outro pacote vim ou você pode simplesmente clonar e soltar em ~/.vim/plugin se você estiver usando o vim ou ~/.config/nvim/plguin se você estiver usando o neovim. Para repetir a penúltima ação, você deve digitar 2\. no modo normal e, para repetir a última ação, digite <n>\. no modo normal.

link link

    
por 22.05.2017 / 09:35

Tags