Vimでコピー、削除、貼り付け


15

昨日Vimを始めたばかりで、コピー&ペーストの理解に問題があります。コピーして視覚モードに入り、ハイライトしてからヤンクすることを理解しています。次に、貼り付けたい行に移動しますが、多くの場合、この行からテキストを削除する必要はありません。xまたはを使用してこれを行いますdw。(と私の元のコピーで、この後、結果が上書きされるxとは、dwカットに思えます)。これを回避するにはどうすればよいですか?

例に入れるには

$foo = $this->foo->property;
thislineuses($foo);

上記のコードをコピーして$this->foo->property、2行目に移動し、削除$fooして貼り付けます。問題は、$foo行2から削除するときに、これがの代わりに貼り付けられることです$this->foo->property

回答:


16

を見てください:h copy-move。デフォルトのヤンクまたは削除は、レジスタ(という名前のレジスタ")と呼ばれる場所に入ります。貼り付ける前にいくつかのテキストを削除する必要がある場合は、発見したようにレジスタxを上書きしないようにする必要があります。幸いなことに、他の文字や数字を使用して別のレジスタに名前を付けることができます。

  • "ayy(レジスタに行をヤンクa
  • xddなど(名前のないレジスタの一部のテキストを削除、"
  • "ap(registerからテキストを貼り付けますa

9

問題が、いくつかtextをsome に置き換えるだけでよいtext2場合、単にhighlightおよびyankしtext2ます。次にtextpまたはPをハイライト表示してtext2、の代わりに貼り付けtextます。

一般的なvimコマンドの簡単な詳細ガイドは、http://www.catswhocode.com/blog/100-vim-commands-every-programmer-should-knowです

楽しい!

編集:pカーソルの後、カーソルのP前にテキストを貼り付けます。


これは、ヤンクする中間レジスタを考慮する必要がないため便利です。それだけで動作します。
ジョンシェーニング

7

名前付きレジスタにコピーし"aywて削除し、名前付きレジスタから貼り付けることができます"ap

ただし、通常は、実行する順序を変更するだけの方が簡単です。貼り付けを行ってから削除を行うか、削除してからコピー/貼り付けを行います。

または、ブラックホールレジスタに削除することもできます"_d/programming//q/54255/70863を参照してください


3

さまざまなテキスト値を保持するために使用できるさまざまなレジスタがあります。削除されたテキストが保存される場所とは異なるレジスタにテキストを保存する場合(つまり、xまたはを使用する場合d w)、次を使用します。

テキストをレジスタに保存するにはa

  • " a[yank and movement command]を押します(テキストをレジスタに保存しますa
  • テキストを貼り付ける場所に移動します
  • プレス" a p(レジスタからテキストを貼り付けますa

キーボードの各文字と各番号にレジスタを使用できます。テキストを削除してもこれらのレジスタは使用されないため、セッションを終了するか、手動で他のレジスタを追加するまで、テキストはレジスタに残ります。


0

v(ではなくV)ビジュアルモードを使用する場合、行全体を強調表示する必要はありません。それがあなたが求めているものなら。

コピーしたテキストの変更について話している場合は、最初にコピー部分と消去部分を変更します。

そして、コピーしたい場合は、オリジナルを変更してから貼り付けます。その後、他のレジスタにヤンクできます。同様に"2y、その後、別の場所に移動して、変更します"2p

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