11

次のテキストがあり (わかりやすくするために行に番号を付けています)、カーソルが 5 行目の先頭にあるとします。

1
2 var x = 1;
3 var y = 2;
4 
5 if (true) {
6     print("Hey!");
7 }

では、5、6、7 行目をカットしてみます (すべて「if」のようなものです)。そのために、私は次のことを行います Vjjd。これで、空の文字列である 4 行目の先頭にいるように見えます。

私の質問: 現時点で、以前にコピーした 5、6、7 行目 (その「if」のようなもの) を失うことなく4 行目を削除して、別の場所に貼り付けることができるようにすることは可能ですか?後でライン?

4

3 に答える 3

20

「n」を使用して、いつでもレジスタにヤンクまたは削除できます。ここで、nはほぼすべてのキーです。「ヘルプレジスタ」で使用可能なレジスタのリストを参照してください。その一部には特別な意味があります。たとえば、次のように実行できます。

> "a3dd (to delete the last three lines into a register called a)
> dd (to delete the blank line) 
> "ap (to paste the a register)

Vjj "adを使用して、元の質問で行っていたことと一致させることもできます。

于 2013-03-06T17:18:01.783 に答える
7

はい:ブラックホールを使用できますバッファ登録:タイプ"_dd

于 2013-03-06T17:17:39.757 に答える
3

#4 行が空行の場合は簡単です。レジスターをいじる必要はありません。ただ行う:

kJ

その意味は:

k: move to #3
J: (shift-J) Join #3 and #4

または、INSERTモードで行うことをお勧めします。

i<BS>

また

I<c-u>

その行が空でない場合:

  • @Derekが提案したように、レジスタを使用して3行または#4を保存します
  • @Janのようにブラックホールレジスタを使用することをお勧めします
  • または番号付きレジスタを使用します。

たとえば、3dd(名前付きレジスタなしで)実行したばかりで、空ではない行(#4)にカーソルを合わせると、直接実行できますdd。3行は消えていません。次の方法で再度貼り付けることができます。

"2p
于 2013-03-06T17:18:57.047 に答える