Quero executar uma macro que acabei de gravar no registro "x
" em cada linha de um buffer aberto, do meu cursor até o final do buffer, no vim. Como faço isso?
Eu sei que posso repetir a macro n vezes:
15@x
... ou apenas segure @
até chegar à última linha, mas quero apenas pressionar algumas teclas e pronto.
Desde já, obrigado.
Respostas:
Pessoalmente eu faria
Editar: registro alterado para o que você especificou.
fonte
Você pode fazer (no modo de comando)
fonte
fazer macro recursiva:
ex:
Irá UPCASE pela primeira palavra da linha atual até o final do arquivo com um único @a. Mas certifique-se de que "um registro está vazio:
fonte
%:normal
abordagem, pois respeita quaisquer movimentos de linha dentro da macro, portanto, é útil quando as linhas não são idênticas na forma. Acho mais fácil criar uma macro 'a' para definir a ação e, em seguida, fazer com que a macro 'b' faça o bit recursivo, ou seja, qb @ a @ bq.ctrl-c
para parar se isso acontecer!:set nowrapscan
faz com que ele falhe e pare ao chegar ao final do arquivo.qaq
antes da macro:qaqqa0gUwj@aq
. Além disso, se você esquecer de colocar o@q
no final, pode sempre fazerqA
para começar a anexar um registro e depois fazer@q
. Eu geralmente gravo no reg q por algum motivo porque é fácil (esp para macros recursivas) e geralmente acabo fazendo emqqqqqgUiwj@qq
vez de duas macros. Os três primeirosq
s apagam o reg q, os doisq
segundos começam a gravar. Consulte vim.wikia.com/wiki/Record_a_recursive_macroa
registro, pode-se digitar simplesqaq
999999@x
, a menos que você tenha um buffer muito grande ...fonte
%:normal @x
ou1,$:normal @x
?99999@x
é a coisa natural que você pensa quando está com pressa :)Do vim wiki, versão abreviada: qqqqq para gravar a macro @qq para finalizar a gravação @q para executá-la (e será executado até o final do arquivo)
fonte