Respostas:
Use um registro em maiúsculas ao puxar (copiar):
"Ay
"A
diz para anexar ao a
registo, ao contrário do "a
que substituir o conteúdo do a
registo.
Depois de copiar tudo para o registro, você pode colar tudo de uma vez com:
"ap
qaq
. Alternativamente, se você quiser apenas para evitar ter junk anterior lá, você pode copiar a sua primeira palavra usando o menor registro de caso: "ay
. Lembre-se, a
e A
consulte o mesmo registro, eles apenas afetam como as coisas são adicionadas.
Você também pode definir seu próprio operador personalizado, que puxaria incrementalmente qualquer objeto de texto ou texto coberto por um movimento:
fu! Incremental_yank(type, ...) abort
if a:type ==# 'char'
norm! `[v`]y
elseif a:type ==# 'line'
norm! '[V']y
elseif a:0
norm! gvy
endif
call setreg('z', @".(a:type ==# 'char' ? ' ' : ''), 'a' . getregtype('"'))
call setreg('"', @z, getregtype('z'))
endfu
nno <silent> zy :<C-U>set opfunc=Incremental_yank<CR>g@
xno <silent> zy :<C-U>call Incremental_yank(visualmode(), 1)<CR>
nno <silent> zyy :<C-U>set opfunc=Incremental_yank<Bar>exe 'norm! '.v:count1.'g@_'<CR>
nno <silent> zyc :<C-U>let [@", @z] = ['', '']<CR>p
Neste exemplo, 4 ligações de teclas estão instaladas:
zy
operador normal para puxar incrementalmente um objeto de texto ou movimentozyy
operador semelhante que trabalha em linhaszy
operador semelhante que trabalha na seleção visualzyc
comando normal para esvaziar os registros "
e z
; útil antes de começar a puxar uma sequência de textosCom ele, você pode:
zyiw
a primeira palavra e repita a operação com o comando dot nas próximaszyy
a primeira e repita a operação com o comando dot nas próximaszy
cada uma delasO código atual confunde o z
registro, se você preferir usar outro registro, como x
por exemplo, você pode alterar as seguintes linhas:
call setreg('z', @", 'a' . getregtype('"')) call setreg('x', @", 'a' . getregtype('"'))
^ ^
call setreg('"', @z, getregtype('z')) → call setreg('"', @x, getregtype('x'))
^ ^ ^ ^
nno <silent> zyc :<C-U>let [@", @z] = ['', '']<CR>p nno <silent> zyc :<C-U>let [@", @x] = ['', '']<CR>p
^ ^
Para mais informações, veja:
:h g@
:h getregtype()
:h setreg()
/^#\s.\+
e depois fazer, zyv
por exemplo!