我试图遵循以下内容:
但
5dd
Run Code Online (Sandbox Code Playgroud)
给
E492:不是编辑器命令:5dd
然后我尝试了:
5d
Run Code Online (Sandbox Code Playgroud)
这只删除一行.如何删除多行?
KCD*_*KCD 154
我发现这更容易
https://superuser.com/questions/170795/how-can-i-select-and-delete-lines-of-text-in-vi
Bon*_*ese 123
如果您知道行号,则可以删除多个(范围)行:
:[start_line_no],[end_line_no]d
Run Code Online (Sandbox Code Playgroud)
注意: d代表删除
其中,
start_line_no是您要删除的起始行,end_line_no是您要删除的结束行.开始和结束之间的行(包括开始和结束)将被删除.
例如:
:45,101d
Run Code Online (Sandbox Code Playgroud)
包括45和101在内的45到101之间的行将被删除.
unp*_*680 118
听起来像是在命令模式下输入命令(又名"Ex模式").在这种情况下,:5d将删除第5行,没有别的.为了5dd按预期工作 - 也就是说,从光标开始删除五个后续行 - 在正常模式下输入,不要在命令前加上:.
Fil*_* W. 11
列出的命令用于正常模式(前缀:为命令模式).
在Vim测试.
按行数:
按行号:
Backwards range given, OK to swap (y/n)?如果您更喜欢非视觉模式方法并确认行号,我想建议您另一种直截了当的方式.
例
我想删除第45行到第101行的文字.
我的方法建议您在命令模式下键入以下命令:
45Gd101G
Run Code Online (Sandbox Code Playgroud)
它写道:
转到第45行(
45G),然后d从当前行删除text()到第101行(101G).
请注意,vim您可能会使用gg而不是G.
与@Bonnie Varghese的回答相比较:
:45,101d[enter]
Run Code Online (Sandbox Code Playgroud)
他的答案上面的命令需要9次打字,包括enter,我的答案需要8-10次打字.因此,我的方法的速度是可比的.
就个人而言,我自己更喜欢45Gd101G,:45,101d因为我喜欢坚持vi命令的语法,在这种情况下是:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
Run Code Online (Sandbox Code Playgroud)
按Esc键确保您不处于编辑模式.将光标放在要删除的第一行上.输入":5dd".应删除当前行和后四行.
或者,如果您打开了行号...
按Esc键确保您不处于编辑模式.输入":#,#d",其中"#"代表要删除的起始和结束行号.