回答:
ヤンク(コピー)するときは大文字のレジスタを使用します。
"Ay
"A
レジスタの内容を置き換えるのではなく、レジスタに追加するように言います。a
"a
a
すべてをレジスターにコピーしたら、次のコマンドを使用して一度にすべてを貼り付けることができます。
"ap
qaq
。または、以前の迷惑メールをそこに入れたくない場合は、小文字のレジスタを使用して最初の単語をコピーできます"ay
。覚えておいてください、a
そしてA
、彼らは物事が追加されている方法に影響を与える、同じレジスタを参照してください。
独自のカスタムオペレーターを定義して、モーションによってカバーされるテキストオブジェクトまたはテキストを段階的にヤンクすることもできます。
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
この例では、4つのキー割り当てがインストールされています。
zy
テキストオブジェクトまたはモーションを段階的にヤンクする通常の演算子zyy
行で機能する同様の演算子zy
視覚的な選択で機能する同様の演算子zyc
レジスタを空にする通常のコマンド"
およびz
; テキストのシーケンスをヤンクする前に役立ちますそれを使用すると、次のことができます。
zyiw
最初の単語にヒットするいくつかの単語をコピーしてから、次の単語にドットコマンドで操作を繰り返すzyy
最初の行にヒットするいくつかの行をコピーしてから、次の行にドットコマンドで操作を繰り返しますzy
、それぞれにヒットします現在のコードはz
レジスタを乱雑x
にします。たとえば、別のレジスタを使用したい場合は、次の行を変更できます。
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
^ ^
詳細については、以下を参照してください。
:h g@
:h getregtype()
:h setreg()
/^#\s.\+
、私はそれを行うことができzyv
ます。