我试图遵循以下原则:
如何在 VI 编辑器中删除选定的文本
但是
5dd
给予
E492: 不是编辑器命令: 5dd
然后我试着:
5d
只删除一行。如何删除多行?
按 Esc键以确保您没有处于编辑模式。 将光标放在要删除的第一行。 输入 :5dd。 当前行,以及接下来的四行应该被删除。
:5dd
或者,如果您打开了行号..。
按 Esc键以确保您没有处于编辑模式。 输入 :#,#d,其中“ #”表示要删除的开始和结束行号。
:#,#d
听起来像是在命令模式下输入命令(也就是。“过时模式”)。在这种情况下,:5d将删除第5行,没有其他内容。为了让 5dd按照预期的方式工作——也就是说,删除从光标开始的五行后续行——在普通模式下输入它,不要在命令前加 :前缀。
:5d
:
我觉得这样更容易
Https://superuser.com/questions/170795/how-can-i-select-and-delete-lines-of-text-in-vi
D5d“削减”五行
我通常只是把数字放在中间,就像这样:
删除7个字母
如果您知道行号,您可以删除多个(范围)行:
:[start_line_no],[end_line_no]d
注意: d 表示删除
在哪里, Start _ line _ no 是要删除的开始行 End _ line _ no 是要删除的结束行。 开始和结束(包括开始和结束)之间的行将被删除。
例如:
:45,101d
45和101之间的线路包括45和101将被删除。
如果你喜欢非视觉模式的方法,并承认行号,我想建议你另一个直接的方法。
例子
我想删除第45行到第101行的文本。
我的方法建议您在命令模式下键入以下命令:
45Gd101G
上面写着:
转到第45行(45G) ,然后从当前行中删除文本(d) ,以 第101行(101G)。
45G
d
101G
请注意,在 vim上可以使用 gg而不是 G。
vim
gg
G
相比之下,“邦妮 · 瓦尔盖塞”的回答是:
:45,101d[enter]
上面的命令从他的答案需要9次键入包括 enter,其中我的答案需要8-10次键入。因此,我的方法的速度是可以比拟的。
就我个人而言,我个人更喜欢 45Gd101G而不是 :45,101d,因为我喜欢坚持 vi 命令的语法,在本例中是:
+---------+----------+--------------------+ | syntax | <motion> | <operator><motion> | +---------+----------+--------------------+ | command | 45G | d101G | +---------+----------+--------------------+
如果您想在特定的行触发器之后删除一个范围,您可以使用这样的东西
:g/^TMPDIR/ :.,+11d
在每次遇到 ^TMPDIR之后删除11行(包括)。
^TMPDIR
列出了在正常模式下使用的命令(命令模式的前缀为 :)。 在 Vim 体内测试。
按行数:
按行号:
Backwards range given, OK to swap (y/n)?
是 dxd 不是 ddx
如果要删除5行,光标到第一行的开头要删除和 d5d
要删除所有行,请使用-ESC gg dG 为了删除几行,让我们说5然后使用 ESC 5dd
键入 :set number < em > (用于编号行)。
:set number