Considerar:
apple
pear
Coloque o cursor na primeira linha e digite Yp
, produzindo:
apple
apple
pear
Coloque o cursor na pear
linha e digite .
para repetir o último comando. Isso repete apenas o p
(em vez da combinação Yp
), produzindo:
apple
apple
pear
apple
Eu gostaria de uma maneira de dizer .
para repetir os últimos N comandos. Algo como 2.
repetir a combinação Yp
para produzir:
apple
apple
pear
pear
Ofc que não vai funcionar - repete o p
dobro. Mas a ideia seria "repetir a sequência dos 2 últimos comandos".
Sei que posso q
gravar as sequências de comando e repeti-las @@
, mas essa solução não é ideal, pois exige que você planeje o tempo todo o tempo todo, enquanto na prática você geralmente não percebe que precisa repetir algo até depois você fez isso.
Existe alguma maneira de conseguir o que eu quero?
Prêmio de consolação: se o acima não for possível, há uma maneira de repetir a última reprodução de macro? Por exemplo, se eu digitar @@
para reproduzir minha última macro, gostaria que o subseqüente .
fosse equivalente a digitar @@
novamente - o que não é (por exemplo, se o resultado @@
depende da linha em que você está)
nno <silent> @@ @@:sil! call repeat#set('@@', v:count1)<CR>
Mas, para que funcione, você precisa instalar este plugin: github.com/tpope/vim-repeatRespostas:
O Vim armazena apenas o último comando executado, e somente isso é repetido por
.
; na minha opinião, qualquer outra coisa seria difícil de lidar.Se você sentir a necessidade de repetir o
Yp
combo como uma entidade única, precisará fazer um único comando. O plugin repeat.vim de Tim Pope permite fazer isso facilmente para mapeamentos personalizados. Obviamente, se você escolher uma [sequência] de teclas curtas para o mapeamento, poderá digitar novamente rapidamente (em vez de.
) e até evitar a integração repeat.vim.BTW, meu plugin LineJuggler fornece um
]d
mapeamento para duplicar a linha atual e suporta a repetição via repeat.vim.fonte
Em
Yp
, a única "alteração" a repetir ép
. A única maneira que sei alterar o comportamento.
no modo normal é adicionary
àcpoptions
opção:que permite repetir o último puxão e a última alteração.
Mas isso não muda nada no seu problema, porque
Yp
ainda existem dois comandos: um puxão seguido de uma mudança.Eu não acho que você pode obter o que deseja sem scripts não triviais. Você deu uma olhada na seção de scripts do vim.org ?
fonte
Eu freqüentemente uso
map
para alcançar esse efeito. Por exemplo:Em seguida, pressionar
F12
repetidamente executaráYpYpYp
etc. Se você quiser passar para a próxima linha após cada colar, mapeie uma tecla paraYp+
.fonte
A engenhoca notável que é o plug- in RepeatLast (do nosso próprio @joeytwiddle ) fornece exatamente essa funcionalidade, através do método profano de gravar tudo o que você faz como macro.
Ele fornece uma série de novos mapeamentos, mas, se eu estou lendo a documentação corretamente, para executar as edições que descrevem você pode usar a seqüência de comandos (presumindo que você estiver usando o padrão
<leader>
de\
):Yp
Arranque e cole / cole a linhaapple
,j
Mova para baixo uma linha para que o cursor esteja agora napear
linha,\D
esqueça oj
comando,2\.
Repita os dois comandosY
ep
fonte