web-dev-qa-db-ja.com

viで複数行を削除するにはどうすればいいですか?

私は以下のことを守ろうとしました。

VIエディタで選択したテキストを削除する方法

しかし

5dd

与える

E492:エディタコマンドではありません:5dd

私が試してみました:

5d

これは単一行を削除するだけです。複数行を削除する方法

103
deltanovember

あなたがコマンドモードでコマンドを入力しているように聞こえます(別名「Exモード」)。そのコンテキストでは、:5dは行番号5を削除します。 5ddを意図したとおりに機能させるには、つまり、カーソル位置から5行連続して削除します。通常モードで入力し、コマンドの先頭に:を付けないでください。

108
souser12345

私はこれが簡単だと思う

  1. ビジュアルモードにする Shift+v
  2. 行を選択
  3. d 削除する

https://superuser.com/questions/170795/how-can-i-select-and-delete-lines-of-text-in-vi

149
KCD

行番号がわかっていれば、複数の(範囲)行を削除できます。

:[start_line_no],[end_line_no]d

注: dは削除を表します

どこで、
start_line_noは削除したい開始行番号、end_line_noは削除したい終了行番号です。開始と終了を含む開始と終了の間の行は削除されます。

例えば:

:45,101d

45と101を含む45と101の間の行は削除されます。

115
Bonnie Varghese

通常モードで使用するためにリストされているコマンド : コマンドモード用).
Vimでテスト済み。

行数によって:

  • numdd - num行から現在のカーソル位置までのカウントを開始します。 5dd 現在の行とその下の4行を削除します=> 現在の行と(num-1)行を削除します
  • numdk - 現在の行と現在の行自体からUPnum行UPを削除します(例: 3dk 現在の行とその上の3行を削除します=> 現在の行とnum行を削除します

行番号で:

  • dnumG - 行を削除します現在の行から(包括的に)UPから行番号までnum(包括的に)(例えば、カーソルが現在オンになっている場合) 5行目 d2G 2行目から5行目を削除します)
  • dnumgg - 行を削除します現在の行から(包括的)DOWNから行番号までnum(包括的)(現在カーソルがある場合など) 2行目 d6gg 2行目から6行目までを削除します)
  • コマンドモードのみ) :num1,num2d - 行を削除します行番号num1(含む)行番号まで下num2(含む。注意:num1num2より大きい場合 - vimはBackwards range given, OK to swap (y/n)?と反応します
9
Filipp W.

を押す Esc あなたが編集モードになっていないことを確認するためのキー。削除する最初の行にカーソルを置きます。 :5ddを入力してください。現在の行とそれに続く4行が削除されます。

代わりに、あなたが行番号をつけているならば...

を押す Esc あなたが編集モードになっていないことを確認するためのキー。 :#,#dを入力します。ここで、 '#'は削除される最初と最後の行番号を表します。

7
Brian S. Wilson

あなたが非ビジュアルモードの方法を好み、行番号を承認するなら、私はあなたにもう一つの簡単な方法を提案したいと思います。

45行目から101行目までのテキストを削除したい。

私の方法は、コマンドモードで下記のコマンドを入力することをお勧めします。

45Gd101G

それは読みます:

45行目(45G)に進み、現在行から101行目(101G)までのテキスト(d)を削除します。

vimでは、ggの代わりにGを使用することができます。

@Bonnie Vargheseの答えと比較してください。

:45,101d[enter]

彼の答えから上記のコマンドは9回入力する必要があります enter私の答えは8 - 10回入力する必要があります。したがって、私の方法の速度は同程度です。

個人的には、私はviのコマンドの構文にこだわるのが好きなので、45Gd101Gより:45,101dを好みます。

+---------+----------+--------------------+
| syntax  | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command |   45G    |        d101G       |
+---------+----------+--------------------+
7
fronthem

d5dは5行を「カット」します

私は通常ちょうどそのように真ん中に数字を投げる:

d7l = 7文字を削除

7
Lon

特定の行トリガーの後に範囲を削除したい場合は、このようなものを使用できます。

:g/^TMPDIR/ :.,+11d

それは^TMPDIRのすべての出会いの後に11行(包括的)を削除します。

3
Evan Carroll

dxxではなくdxdです

5行削除したい場合は、削除する最初の行の先頭にカーソルを合わせてd5d

1
chris

すべての行を削除するには - ESC gg dG数行を削除するには5としてからESC 5ddを使用します。

1
  1. Esc 挿入モードを終了するには
  2. :1enter 1行目に移動します( '1'を興味のある行に置き換えます)
  3. 5dd 5行削除する(現在の行から)

Type:set number(番号付き行用)

0
JSON C11