回答:
「貼り付け」とは、名前のない(ヤンク/プット/変更/削除/置換)レジスタを意味していると思いますよね?(それはchangeコマンドによって上書きされるものだからです。)
レジスタは、一般的に入力することで指定されている"
ように、その後、レジスタの名前(単一の文字)を"ay
、その後"ap
レジスタにヤンクしa
、その後、レジスタの内容を置きますa
。変更コマンドについても同様です。あなたが変更コマンドで削除したテキストがどこにも行きたくない場合は、この場合、あなたはブラックホールのレジスタを使用することができます"_
: "_cw
。次に、挿入モードになったら、Ctrlキーを押しながらRキーを押し、続けてレジスタ(おそらく"
)にそのレジスタの内容を入力させます。
"*
-選択レジスター(中央ボタンの貼り付け)"+
-クリップボードレジスタ(おそらく、端末を介してctrl-shift-vでアクセス可能)""
-vimのデフォルト(名前のない)yank / put / change / delete / substituteレジスター。短い答え: "_cw^R"
編集:他の人が示唆しているように、もちろん、テキストをデフォルトのレジスターに入れたヤンク(または何でも)に別のレジスターを使用できます。ただし、常に最初にそのことを考えるとは限らないため、1つの変更コマンドを吹き飛ばさずに実行するのがよいでしょう。それは完全に吹き飛ばされていませんが。"0
を通じて番号付きレジスタがあります"9
:
Vimはこれらのレジスタにyankコマンドとdeleteコマンドからのテキストを入力します。
番号付きレジスタ0には、コマンドが["x]で別のレジスタを指定していない限り、最新のyankコマンドからのテキストが含まれています。
番号付きレジスター1には、コマンドが別のレジスターを指定した場合、またはテキストが1行未満の場合(小さな削除レジスターが使用されます)を除き、最新の削除または変更コマンドによって削除されたテキストが含まれます。:例外がこれらの移動コマンドとdelete演算子のために作られている
%
、(
、)
、`
、/
、?
、n
、N
、{
と}
。レジスタ「1」は常に使用されます(これはVi互換です)。削除が行内にある場合は、「-レジスタ」も使用されます。連続して削除または変更されるたびに、Vimはレジスター1の以前の内容をレジスター2に、2を3に、というようにシフトし、レジスター9の以前の内容を失います。
:help registers
ます。
この投稿の情報を使用して、この便利なマッピングを作成しました。「変更」を意味する「cp」を選択しました
nmap <silent> cp "_cw<C-R>"<Esc>
編集:
また、これをさらに一歩進め、あらゆる動きをサポートしました。
上記のコマンドと同等のものを取得するにはcpw
、「貼り付け単語を変更する」
"This allows for change paste motion cp{motion}
nmap <silent> cp :set opfunc=ChangePaste<CR>g@
function! ChangePaste(type, ...)
silent exe "normal! `[v`]\"_c"
silent exe "normal! p"
endfunction
nmap <silent> cp :let g:currentRegister=v:register<cr>:set opfunc=ChangePaste<CR>g@ function! ChangePaste(type, ...) silent exe "normal! `[v`]\"_c".getreg(g:currentRegister) endfunction
名前のないレジスタの内容で置き換えたい単語の上にカーソルがある場合は、を使用できますviwp
。v
ビジュアルモードに切り替えiw
、内側の単語を選択しp
、レジスタの内容をその場所に配置します。
実際には、ある単語(関数名など)を別の単語に置き換える必要がある場合は、その単語に移動して置換として使用しyiw
、内部の単語を名前のないレジスターにヤンクしてから、単語に移動します。 m交換し、viwp
交換します。ある単語を別の単語に置き換えるかなり簡単な方法。/
置換する単語を検索()してその単語に到達した場合は、次に押すだけでn
、置換する必要のある次の出現に到達できます。明らかにを使用する代わりはありません:%s/find/replace/g
が、特にレジスタに新しい単語がある場合は、いくつかの簡単な置換を行うと便利です。
名前付きレジスターを使用する場合(つまり、"ay
またはを使用して"ad
、貼り付けレジスターを埋める)、次のようなことができます
cw<CTRL-R>a<esc>
これは、単語をレジスタの内容に置き換えますa
。私が知る限り、デフォルトのレジスターを使用することはできませんcw
。そのコマンドによって切り取られた単語でいっぱいになるからです。
システム貼り付けバッファまたはviレジスタを意味しますか?
あなたはペーストバッファシステムを使用したい場合、あなたは大丈夫ですと行うことができますdw"+P
- "
レジスタを選択し、"+
システムのペーストバッファです。
それ以外の場合は、たとえばデフォルト以外のレジスタ"ay
にコピーして、レジスタにコピーしてa
から何かを置き換えるようにしますdw"aP
dw
「単語」と見なすものの後の空白を削除しcw
ますが、単語を変更するだけです。そのため、dw
私にはうまくいきません。
de
、あなたのために働くはずです-それはこの単語の最後まで削除しますdw
が、次の単語の最初まで削除します。
12yl
12文字をヤンクし"_cw^r0
て単語を置き換えていました。その後、.
コマンドを使用して、ファイル全体で置換を繰り返すことができました。