144

私は以下に従おうとしました:

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

しかし

5dd

与える

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

次に試しました:

5d

1行だけ削除します。複数の行を削除するにはどうすればよいですか?

4

11 に答える 11

156

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

:[start_line_no],[end_line_no]d

注: d は削除を表します

ここで、
start_line_no は削除する開始行番号、end_line_no は削除する終了行番号です。start と end を含む start と end の間の行は削除されます。

例えば:

:45,101d

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

于 2014-02-10T22:47:57.443 に答える
13

非ビジュアル モードの方法を希望し、行番号を認識している場合は、別の簡単な方法を提案したいと思います。

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

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

45Gd101G

それは読みます:

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

の代わりにonvimを使用できることに注意してください。ggG

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

:45,101d[enter]

上記の彼の回答のコマンドには、 を含む 9 回の入力がenter必要ですが、私の回答では 8 ~ 10 回の入力が必要です。したがって、私の方法の速度は匹敵します。

個人的には、私は vi のコマンドの構文に固執45Gd101Gする:45,101dのが好きなので、この場合は次のようにします。

+---------+----------+--------------------+
| syntax  | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command |   45G    |        d101G       |
+---------+----------+--------------------+
于 2016-09-16T09:47:09.200 に答える
9

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

私は通常、次のように数字を真ん中に投げます。

d7l = 7 文字を削除

于 2013-11-01T16:09:40.923 に答える
5
  1. Esc 挿入モードを終了するには
  2. :1enter 行 1 に移動します (「1」を関心のある行に置き換えます)
  3. 5dd 5 行を削除 (現在の行から)

タイプ (番号付き行)。:set number

于 2019-05-05T03:51:46.727 に答える
3

特定のライントリガーの後に範囲を削除する場合は、次のようなものを使用できます

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

これは、^TMPDIR.

于 2017-01-24T08:20:01.967 に答える
0

ddxではなくdxdです

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

于 2018-03-22T23:04:36.307 に答える