Eu tenho um arquivo com várias linhas. Gravei uma macro que executa uma operação em uma única linha. Quero repetir essa macro em todas as linhas restantes no arquivo. Existe uma maneira rápida de fazer isso?
Tentei Ctrl + Q, destaquei um conjunto de linhas e pressionei @@, mas isso não pareceu funcionar.
vim
vim-macros
Jordan Parmer
fonte
fonte
Respostas:
Use o normal comando no modo Ex para executar a macro em várias / todas as linhas:
Execute a macro armazenada no registro a nas linhas 5 a 10.
Execute a macro armazenada no registro a nas linhas 5 até o final do arquivo.
Execute a macro armazenada no registro a em todas as linhas.
Execute o armazenamento de macro no registro a em todas as linhas que correspondem ao padrão .
Para executar a macro em linhas visualmente seleccionados, prima V e o j ou k até a região desejada é seleccionada. Em seguida, digite
:norm! @a
e observe a seguinte linha de entrada é mostrada.Digite : ajude o normal no vim para ler mais.
fonte
:norm! @a
:
após destacar as linhas, a linha de entrada Ex lerá:'<,'>
na qual você adicionará o restante do que Kevin sugeriu. Isso fará com que o comando final ler::'<,'>norm! @a
.!
Evita o remapeamento de chaves pelo usuário. Você pode não precisar, mas uma resposta que funcione para todos exige isso.Use global para executar a macro 'a' em todas as linhas que contêm 'padrão'
Para obter ajuda, consulte:
:help global
.fonte
Você também pode fazer isso:
No modo normal:
Por exemplo:
Apaga a macro no registro q para as próximas 1000 linhas.
fonte
:%norm! @a
evGG :norm! @a
j
comando para ir para a próxima linha, caso contrário, tentará aplicá-la à mesma linha.Há também um plugin chamado RangeMacro, faz exatamente o que você deseja! Para todos que não conseguem adivinhar pelo nome, o que faz: repete uma macro gravada para cada linha em um determinado intervalo, independentemente da seleção visual ou de: 40,50 /: +10
Consulte http://www.vim.org/scripts/script.php?script_id=3271
fonte