Um padrão de edição com o qual frequentemente encontro é o seguinte: quero puxar um pedaço de texto entre aspas ou colchetes e substituir esse pedaço de texto dentro de outro par de aspas / colchetes.
Por exemplo, se eu quiser copiar o nome da classe foo bar
e colá-lo em outro lugar:
<span class="foo bar">
<div class="this-should-be-replaced-with-foo-and-bar">
O que sei é o seguinte: se eu for para a classe do período, uso yi"
para puxar o texto entre aspas.
Agora eu tenho isso no meu registro, então devo poder substituir o conteúdo da classe da div por ele. Mas não consigo encontrar uma maneira prática de fazer isso.
Se eu usar ciw
isso, você substituirá meu registro com conteúdo para alterar, então eu perco meu texto arrancado.
A melhor coisa que posso encontrar é passar para a primeira citação da classe div, pressionando p
e excluindo para a próxima citação com dt"
.
Normalmente, eu estrago minha posição, e colo em algum lugar dentro das aspas, unindo as duas strings, e isso está atrapalhando as coisas.
Espero que haja uma maneira de fazer uma combinação "substituir o texto interno pelo meu conteúdo arrancado, por favor" para facilitar isso.
fonte
Você pode usar o registro numerado. Primeiro arranque "foo-bar" com
yi"
, o que preencherá o"0
registro, veja:h "0
. Em seguida,ci"<c-r>0
substitua pelo conteúdo do registro 0.Veja
:h i_CTRL-R
para uma descrição da última parte.fonte
yi"
) e colá-lo no registro0
em que está armazenado depois que você excluiu o texto para alterar (ci"<c-r>0
)? Em termos de vimgolf, você ganha 2 pressionamentos de tecla e não mexe com seus registros.CTRL+r
antesa
, é isso que<c-r>
significa.ciw
, o texto excluído é inserido no registro sem nome, mas os registros são alterados, é por isso que você precisa usar em<c-r>0
vez de<c-r>"
. Veja:h quote_number
."0
registro é preenchido apenas pelo comando yank e não será perturbado, por exemploc
.Eu preciso disso com tanta frequência que escrevi um plugin para simplificar e permitir a velocidade máxima: ReplaceWithRegister .
Este plug-in oferece um
gr
comando dois-em-um que substitui o texto coberto por um {motion} / objeto de texto, linha (s) inteira (s) ou a seleção atual pelo conteúdo de um registro; o texto antigo é excluído no registro do buraco negro, ou seja, foi removido. Ele lida de forma transparente com muitos casos de canto e permite uma repetição rápida através do.
comando padrão . Caso você não goste, sua página possui links para alternativas.fonte
Aqui está outra solução. Não é o melhor em termos de Vimgolf, mas usa o registro do buraco negro:
Quando estiver na
foo bar
corda, você pode puxá-la normalmente usandoyi"
.Em seguida, dentro dos colchetes para mudar:
"_di"P
Qual é:
A vantagem do registro do buraco negro é que ele não estragará os outros registros. Veja
:h quote_
para mais detalhes.(Observe que esta resposta está aqui apenas para falar sobre o registro de blecaute. Eu pessoalmente uso a seleção visual, conforme sugerido por @grodzik.)
fonte
P
para essa. Quandodi"
o cursor for deixado nas últimas aspas ep
será colado depois, onde comoP
será colado antes da posição atual.