如何在vi中删除多行?

时间:2013-04-09 21:26:58

标签: vi

我试图遵循以下规定:

How to delete selected text in VI editor

5dd

给出

  

E492:不是编辑命令:5dd

然后我尝试了:

5d

仅删除一行。如何删除多行?

12 个答案:

答案 0 :(得分:148)

我觉得这很容易

  1. Go VISUAL模式 Shift + v
  2. 选择行
  3. d 删除
  4. https://superuser.com/questions/170795/how-can-i-select-and-delete-lines-of-text-in-vi

答案 1 :(得分:112)

如果您知道行号,则可以删除多个(范围)行:

:[start_line_no],[end_line_no]d

注意: d代表删除

其中,
 start_line_no是您要删除的起始行和  end_line_no是您要删除的结束行。  将删除开始和结束之间的行,包括开始和结束。

例如:

:45,101d

45和101之间的行(包括45和101)将被删除。

答案 2 :(得分:108)

听起来像是在命令模式下输入命令(又名。" Ex模式")。在该上下文中,:5d将删除第5行,而不是其他任何内容。要使5dd按预期工作 - 也就是说,从光标开始删除五个后续行 - 以正常模式输入,不要在命令前添加:

答案 3 :(得分:9)

列出的命令用于正常模式(前缀为用于命令模式)。
在Vim中测试。

按行数:

  • num d d - 将删除 num 行DOWN从当前光标位置开始计数(例如 5 d d 将删除当前行,其下有4行=> 删除当前行和( num-1 )下面的行
  • num d k - 将从当前行和当前行本身删除 num 行UP(例如< kbd> 3 d k 将删除当前行及其上方的3行=&gt; 删除当前行和 num 上面的行

按行号:

  • d num G - 将从当前行(包括)UP删除行到行号 num (包括)(例如,如果光标当前在第5行 d 2 G 将删除第2-5行)
  • d num g g - 将从当前行(包括)中删除行向下行号 num (含)(例如,如果光标当前在第2行 d 6 g g 将删除第2-6行(包括)
  • 仅命令模式 num1 num2 d - 将行号 num1 (含)行删除至行号 num2 (含)。注意:如果 num1 大于 num2 - vim会对Backwards range given, OK to swap (y/n)?做出反应

答案 4 :(得分:7)

Esc 键确保您未处于编辑模式。 将光标放在要删除的第一行上。 输入:5dd。 应删除当前行和后四行。

或者,如果您打开了行号...

Esc 键确保您未处于编辑模式。 输入:#,#d,其中'#'代表要删除的起始和结束行号。

答案 5 :(得分:7)

d5d“削减”五行

我通常只把数字扔在中间,如:

d7l =删除7个字母

答案 6 :(得分:7)

如果您更喜欢非视觉模式方法并确认行号,我想建议您另一种直截了当的方式。

示例

  

我想删除第45行到第101行的文字。

我的方法建议您在命令模式下键入以下命令:

45Gd101G

它的内容如下:

  

转到第45行(45G),然后从当前行删除文本(d)   第101行(101G)。

请注意,在vim上,您可以使用gg代替G

与@Bonnie Varghese的答案相比较:

:45,101d[enter]

上面的命令从他的回答中需要9次输入,包括 enter ,其中我的答案需要8-10次打字。因此,我的方法的速度是可比的。

就个人而言,我自己更喜欢45Gd101G而不是:45,101d,因为我喜欢坚持vi命令的语法,在这种情况下是:

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

答案 7 :(得分:3)

如果你想在特定的行触发后删除一个范围,你可以使用类似的东西

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

每次遇到^TMPDIR后删除11行(包括)。

答案 8 :(得分:1)

是dxd,而不是ddx

如果要删除5行,请将光标移至要删除的第一行的开头和d5d

答案 9 :(得分:1)

要删除所有行,请使用 - ESC gg dG 要删除几行,请说5然后使用ESC 5dd

答案 10 :(得分:0)

  1. Esc 退出插入模式
  2. 1 输入 转到第1行(将“ 1”替换为您感兴趣的行)
  3. 5 d d 删除5行(从当前行开始)

类型 :set number (用于编号的行)。

答案 11 :(得分:-1)

可以按照以下步骤进行。

  1. 将光标置于要删除的位置。
  2. 按“ v”按钮开始视觉选择。
  3. 使用箭头键将光标移至要删除的位置。
  4. 按“ d”将删除这些行。
  5. 现在使用“:x!”保存并退出