如何删除vi中的多行?

我试图遵循以下内容:

如何在VI编辑器中删除选定的文本

5dd 

E492:不是编辑命令:5dd

我然后尝试:

 5d 

其中只删除一行。 我怎样才能删除多行?

听起来就像在命令模式下input命令一样(即“Ex模式”)。 在这种情况下:5d将删除第5行,没有别的。 为了使5dd按照预期工作 – 也就是说,从光标开始删除5条相应的行 – 在普通模式下input它,不要在命令前加上:

我觉得这更容易

  1. 进入VISUAL模式Shift + v
  2. select线
  3. d删除

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

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

 :[start_line_no],[end_line_no]d 

注意: d代表删除

哪里,
start_line_no是您要删除的开始行,end_line_no是您要删除的结束行号。 开始和结束之间的行,包括开始和结束将被删除。

例如:

 :45,101d 

包括45和101的45和101之间的连线将被删除。

按Esc键确保您不处于编辑模式。 将光标放在要删除的第一行上。 input“:5dd”。 当前行和接下来的四行应该被删除。

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

按Esc键确保您不处于编辑模式。 input“:#,#d”,其中“#”代表要删除的开始和结束行号。

如果你喜欢非视觉模式的方法,并确认行号,我想build议你一个简单的方法。

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

我的方法build议您在命令模式下键入下面的命令:

 45Gd101G 

它写道:

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

请注意,在vim你可以用gg来代替G

比较@Bonnie Varghese的回答是:

 :45,101d[enter] 

从他的答案上面的命令需要9次input,包括input ,我的答案需要8 – 10次打字。 因此,我的方法速度是可比的。

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

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

d5d“切”五行

我通常只是把这个数字放在中间:

d7l =删除7个字母

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

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

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

在正常模式下使用的命令(前缀为用于命令模式)。 在Vimtesting过。

按行数量:

  • num d d – 将从当前光标位置删除num个行的开始计数(例如5 d d将删除当前行,其下的4行=> 删除当前行和下面的( num-1 )行
  • num d k – 将从当前行和当前行本身删除num行UP(例如, 3 d k将删除当前行,并在其上面3行)> 删除当前行和当前行的num

按行数:

  • d num G将从当前行(包含)删除行到行号num (包括) (例如,如果光标当前在行5 d 2 G将删除行2-5)
  • d num g g将从当前行(含)中删除行到行号num (含) (例如,如果光标当前在第2行d 6 g g将删除第2-6行)
Interesting Posts