我试图遵循以下内容:
但
5dd
给
E492:不是编辑器命令:5dd
然后我尝试了:
5d
仅删除一行。如何删除多行?
我觉得这更容易
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 是您要删除的结束行号。start 和 end 之间的线,包括 start 和 end 将被删除。
例如:
:45,101d
45 和 101 之间的行,包括 45 和 101 将被删除。
听起来您正在以命令模式(又名“Ex 模式”)输入命令。在这种情况下,:5d
将删除第 5 行,仅此而已。为了5dd
按预期工作 - 即删除从光标开始的五个后续行 - 在正常模式下输入它并且不要在命令前加上:
.
列出的在正常模式下使用的命令(带有:for 命令模式的前缀)。
在 Vim 中测试。
按行金额:
按行号:
Backwards range given, OK to swap (y/n)?
如果您更喜欢非可视模式方法并确认行号,我想建议您另一种直接的方法。
例子
我想删除第 45 行到第 101 行的文本。
我的方法建议您在命令模式下键入以下命令:
45Gd101G
上面写着:
转到第 45 行 ( ),然后从当前行
45G
删除文本 ( ) 到第 101 行 ( )。d
101G
请注意,vim
您可能会使用ongg
而不是G
.
与@Bonnie Varghese 的答案比较,即:
:45,101d[enter]
他回答的上述命令需要输入 9 次enter,其中我的回答需要输入 8-10 次。因此,我的方法的速度是可比的。
就个人而言,我自己更喜欢45Gd101G
,:45,101d
因为我喜欢坚持 vi 命令的语法,在这种情况下是:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
d5d“删减”五行
我通常只是把数字放在中间,比如:
d7l = 删除 7 个字母
按Esc键以确保您未处于编辑模式。将光标放在要删除的第一行。输入:5dd
。当前行和接下来的四行应该被删除。
或者,如果您打开了行号...
按Esc键以确保您未处于编辑模式。输入:#,#d
其中“#”代表要删除的开始和结束行号。
类型 (用于编号的行)。:set number
如果您想在特定行触发器之后删除范围,您可以使用类似这样的东西
:g/^TMPDIR/ :.,+11d
每次遇到^TMPDIR
.
是 dxd,不是 ddx
如果要删除5行,光标到第一行的开头删除d5d
要删除所有行使用 - ESC gg dG 要删除几行让我们说 5 然后使用 ESC 5dd