上書きせずにvimレジスタに行を追加する方法


84

レジスターの行をヤンクしたいのです"{register}yが、以前はレジスターにあったものを上書きしません。レジスタ内の連続していない行をコピーする必要があることがよくあり、スタックのようにレジスタを使用したい場合があります。

例:

line1
line2
line3

line1カーソルを置いて入力し"ay、次に進んでline3実行して、コピーしたいと思います"ay。そして、私がやるだろう"ap、BOTHline1line3貼り付けられます。

これはプラグインなしで可能ですか?プラグインで?


ファイルの先頭に定義のクイックリストを作成するのに最適です。
Joe McGrath

回答:


131

名前付きレジスタに追加する場合は、対応する大文字を使用します。すなわちあなたの例では:

「ayy
「あぁ
「ap

11
名前のないレジスタに追加する方法はありますか?(メインのもの)
Zaffy 2013年


^^、IMOにアクセスする人を節約するには、名前付きレジスタを使用する方が簡単です。「athink」と入力すると、「registera ...」「A」を使用して「a」を登録します
Rob Kielty

12

MarkBの応答を拡張するために、マーカーを使用してヤンクのテキストのブロックを選択することもできることをご存知ですか?

ヤンクするブロックの最初の行に移動し、マーカーとして文字を選択した後、マークコマンドを入力します。

ma  (entered in command mode, i.e. no colon)

次に、ヤンクするブロックの一番下に移動して、次のコマンドを入力します。

:'a,.ya A

このコマンドは、upと呼ばれるマーカーを含む行から現在の行までのテキストのブロックを取得し、それをバッファーaにヤンクすることを意味します。前述のMarkBと同じルールが適用され、小文字のバッファー名を使用してバッファーを上書きします。大文字のバッファ名を使用して、バッファに追加します。したがって、この場合、これはバッファaの内容に追加されます。

注意:マーカーに使用される「a」は、レジスターの選択に使用される「a」とは何の関係もありません。(AFAIK、ただしYMMV)

ところで、a(アポストロフィa)は、マーカーaを含む行を指します。ʻa(逆引用符a)は、maを入力したときのカーソルの下の文字を指します。

`ad`b (also entered in command mode)

マーカーaでマークされた文字から、マーカーbでマークされた文字の直前の文字までのテキストが削除されるので便利です。


'a、.ya Aは機能しますが、->ʻaの前にチェックマークを付けてみると:E492:エディターコマンドではありません:ʻa、.yaA。他の文字を使用しないようにすると助かります例のマーカーのaよりも、どの文字がどの文字であるかが明確です:)
justin w
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.