vim:*だけ*コピーを実行できますか?


11

私はvimを好きになることを学んでいますが、まだ完全に受け入れられていないことの1つは、コピーと貼り付けの状況です。マグルのテキストエディタで、私は考えCtrl- Cテキストの一部をコピーして編集/削除して、どこか他のテキストを貼り付けます。しかしvimではこれを行うことができません。テキストをyでコピーした後、テキストを変更するdx、元のテキストが消去されてしまうことがよくあるからです。

作成する方法はありますdし、xテキストをコピーしませんか?それとも、これらのvim機能をどのように使用すればよいですか?

回答:


16

以前の9つのヤンクは、から呼び出されるレジスタに保存され1ます9。最後から2番目のヤンクは"1pで、前のヤンクはで、という"2pように呼び出すことができます。このコマンド:regは、貼り付けに使用できるレジスターを表示します。

ヤンクの寿命を延ばしたい場合は、レターレジスタを使用してください

より曖昧なヤンク関連のコマンドについては:help "、マニュアルを読んでください。


2
また、レジスター0には、(削除されたのではなく)ヤンクされた最後のテキストが含まれています。元の質問に戻って参照するとy、でヤンクし、dやを含めて編集を続行し、ヤンクしたxテキストをで貼り付けることができます"0p
Nefrubyr

@Nefrubyr、上のコメントは実際には最も単純な回答ですが、既存の3つの回答のいずれにも言及されていません。おそらくそれを追加する必要がありますか?(そうでない場合があります。)
ワイルドカード

9

あなたが話しているコマンドは、いわゆる「無名」レジスタを使用します。非常に短期間の使用のみを目的としています。「これをここからヤンクして、あそこに置いてやる」みたいな。

何か他のことを行っている間に数秒以上ホールドしたい場合は、名前付きレジスタを使用する必要があります。

たとえば" a y y、カーソルがある行をaレジスターにヤンクします。aレジスタに関連する別のコマンドを入力しない限り、偶然に何かが誤って上書きされることはありません。数分後、数時間後、さらには数日後でも、入力" a pした行のヤンクしたコピーをaレジスターからカーソルがあるものの下にドロップできます。

(これがうまく機能するためにset viminfo='50,\"1000は、~/.vimrcファイル内に次のような行が必要です。Vimセッション全体でコンテンツを登録するなどのことを覚えておくように指示する必要があります。その後、ヤンクとプットの間で休暇を取ることができます!)

名前付きレジスター(az)は26個あります。これらを上記のように大文字ではなく大文字で指定すると、現在のレジスタの内容を置き換えるのではなく、現在のレジスタの内容に追加します。したがって、たとえば、h一度に1つずつ登録して、非常に複雑なものを構築し、それをで一度にすべて落とすことができ" h pます。

レジスタ名はオプションであることに注意してください。これは、名前付きレジスタを使用できる場所で、すでに知っていて使用しているコマンドが多数あることを意味します。言う:help registersの可能性のいくつかのアイデアを得るためにVimの中で。

また、Viマグを入手してください


1

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

あなたが行う場合は"_dd、たとえば、現在の行はすぐに削除され、忘れ去られます。

実際、私はこのレジスターをあまり使用しません。汎用レジスター(任意の文字レジスター)に保存するよりもキーストロークが少なくありません。汎用レジスターに保存した場合、少なくとも、削除した行は、レジスターを上書きするまで引き続き使用できます。必要が生じます。

削除するときに別のレジスタを使用するのを忘れがちな場合はdd、たとえば次のようにラッパーマクロを定義できます:noremap dd "add


0

(現在の)受け入れられた回答へのコメントで指摘されているように、これを行うための標準的な方法は、レジスタゼロ("0)を使用することです。登録ゼロは常に最後のヤンクが含まれており、によって上書きされ得ることはありませんdし、xそう、"0pあなたは関係なく、その間に編集されているもののヤンクどんなプットいつも。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.