Vimでは、複数の行からどのようにコピーできますか?(範囲ではない);


20

私が持っていると仮定します

1 - funct1
2- funct 2
3 - funct 3 
4 line 4

行1と3(行の範囲ではない)をコピーして、たとえば行8に貼り付けるにはどうすればよいですか?|1y|3y)のようなarg を使用してこれを行うと、行をいくつかのレジスタにヤンクしますよね?しかし、複数のレジスタから一度に配置するにはどうすればよいですか?

回答:


33

小文字ではなく大文字を使用して、レジスタを消去する代わりに追加できます。

例えば:

:1y a      # copy line 1 into register a (erases it beforehand)
:3y A      # copy line 3 into register a (after its current content)
8G  # go to line 8
"ap        # print register a

1
これを通常モードで行うこともできます"ayyjj"Ayy"ap
-wchargin

5
(または1G"ayy3G"Ayy8G"ap明示的な行番号の場合)
-wchargin

1
G行に行くだけではありません<C-G>か?
デビッド

1
これはとてもクールです。バッファAに必要なものを追加し続けると、すべてが保持されます。最初からやり直すには、何かを登録するa
-CornSmith

1
@CornSmith Nitpick:バッファはvimのコンテキストでは非常に特殊な用語です。"aレジスタです。
ドアノブ

1

次の:copyように短縮できるコマンドを使用できます:t

:1t8
:3t8

ある範囲の行(たとえば、1から3までのすべての行)をコピーする場合は、次のようにします。

:1,3t8

行数をコピーしますが、行の範囲はコピーしません... tコマンドのようなものを行に追加できますか?
Whats Myname

0
1Gyy7Gp #use 7 if you wish to paste the line at 8
3Gyy8Gp #use 8 if you wish to paste the line at 9

これらは、より良いと表現することができる:tもクリアしないコマンド、"または0レジスタを。
ドアノブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.