vim:*ただ*コピーするだけですか?

vim:*ただ*コピーするだけですか?

私はvimが好きな方法を学んでいますが、まだ完全に受け入れられていないものはコピーして貼り付ける状況です。マーグルテキストエディタでは、テキストセクションをCtrlコピーして編集/削除し、テキストを別の場所に貼り付けました。ただし、vimでは、テキストをコピーしてテキストを変更すると、元のテキストが削除されることが多いCため、これを行うことはできません。ydx

テキストをコピーするd代わりにこれを作成する方法はありますか?xまたは、これらのvim機能をどのように使用する必要がありますか?

答え1

前の9つのコピーは1呼び出しによってレジスタに保存されます9。最後に引っ張った2番目の項目を呼び出すために使用したり、最後に引っ張った"1p項目を呼び出すために使用する"2pなどの操作を実行できます。このコマンドは、:reg貼り付けに使用できるレジスタを表示します。

長く引っ張り続けたい場合は、アルファベットレジスタの使用

もっと曖昧なyank関連のコマンドを見るには、:help "マニュアルを読んでください。

答え2

あなたが言うコマンドはいわゆる「名前が付けられていない」レジスタを使用します。これは非常に短期間だけ使用するように設計されています。 「これをここから選んでそこに置くんだ」 こんな感じです。

他の作業中に数秒以上何かを維持したい場合は、名前付きレジスタを使用する必要があります。

たとえば、カーソルの" a y yある行をレジスタにドラッグしますaaレジスタに関連する他の命令を入力しない限り、誤ってレジスタが中断されることはありません。数分、数時間、さらに数日後に入力し、レコード" a pからその行のコピーをドラッグしてカーソルがあるa場所の下に置くことができます。

set viminfo='50,\"1000(うまく機能するには、~/.vimrcVimセッション全体で登録されたコンテンツなどを覚えているように指示する1行をファイルに追加する必要があります。

26個の名前付きレジスタ(az)があります。上記のように大文字で指定した場合は、置換せずに現在のレジスタの内容に追加されます。したがって、h一度に1つのフラグメントを登録してから、ワンショットを使用してすべてを削除するなど、非常に複雑なものを作成できます" h p

レジスタ名はオプションです。つまり、名前付きレジスタを使用するために必要な多くの命令をすでに知っていて使用しているという意味です。:help registersいくつかの可能性については、Vimと話してください。

返品、バイマグを入手

答え3

コピーレジスタを変更せずにdを使用してテキストを削除する必要がある場合(たとえば、テキストをコピーしたが他のテキストを削除する前に貼り付ける準備ができていない場合)、次のものを使用できます。ブラックホールレジスタ _

"_ddたとえば、これを行うと、現在の行がすぐに削除され、忘れられます。

実際、私はこのレジスタを頻繁に使用しません。通常のレジスタ(アルファベット順のレジスタ)に保存するよりも少ないキー入力は必要ありません。通常のレジスタに保存する場合、削除した行は少なくとも必要に応じてレジスタを上書きするまで使用できます。

dd削除時に他のレジスタを使用することを忘れる傾向がある場合は、次のようなラッパーマクロを定義できます:noremap dd "add

答え4

(現在)許可された回答のコメントで指摘したように、これを行う正式な方法はレジスタ0("0)を使用することです。レジスタ0は常に最後のコピーを含み、dによって上書きされませんx。そのため、"0p編集中の内容は常にコピーした内容に保存されます。

関連情報