如何删除vi中的多行?
我试图遵循以下内容:
如何在VI编辑器中删除选定的文本
但
5dd
给
E492:不是编辑命令:5dd
我然后尝试:
5d
其中只删除一行。 我怎样才能删除多行?
听起来就像在命令模式下input命令一样(即“Ex模式”)。 在这种情况下:5d
将删除第5行,没有别的。 为了使5dd
按照预期工作 – 也就是说,从光标开始删除5条相应的行 – 在普通模式下input它,不要在命令前加上:
。
我觉得这更容易
- 进入VISUAL模式Shift + v
- select线
- 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行)