我试图遵循以下规定:
How to delete selected text in VI editor
但
5dd
给出
E492:不是编辑命令:5dd
然后我尝试了:
5d
仅删除一行。如何删除多行?
答案 0 :(得分:148)
我觉得这很容易
https://superuser.com/questions/170795/how-can-i-select-and-delete-lines-of-text-in-vi
答案 1 :(得分:112)
如果您知道行号,则可以删除多个(范围)行:
:[start_line_no],[end_line_no]d
注意: d代表删除
其中,
start_line_no是您要删除的起始行和
end_line_no是您要删除的结束行。
将删除开始和结束之间的行,包括开始和结束。
例如:
:45,101d
45和101之间的行(包括45和101)将被删除。
答案 2 :(得分:108)
听起来像是在命令模式下输入命令(又名。" Ex模式")。在该上下文中,:5d
将删除第5行,而不是其他任何内容。要使5dd
按预期工作 - 也就是说,从光标开始删除五个后续行 - 以正常模式输入,不要在命令前添加:
。
答案 3 :(得分:9)
列出的命令用于正常模式(前缀为:用于命令模式)。
在Vim中测试。
按行数:
按行号:
Backwards range given, OK to swap (y/n)?
做出反应答案 4 :(得分:7)
按 Esc 键确保您未处于编辑模式。
将光标放在要删除的第一行上。
输入:5dd
。
应删除当前行和后四行。
或者,如果您打开了行号...
按 Esc 键确保您未处于编辑模式。
输入:#,#d
,其中'#'代表要删除的起始和结束行号。
答案 5 :(得分:7)
d5d“削减”五行
我通常只把数字扔在中间,如:
d7l =删除7个字母
答案 6 :(得分:7)
如果您更喜欢非视觉模式方法并确认行号,我想建议您另一种直截了当的方式。
示例
我想删除第45行到第101行的文字。
我的方法建议您在命令模式下键入以下命令:
45Gd101G
它的内容如下:
转到第45行(
45G
),然后从当前行删除文本(d
) 第101行(101G
)。
请注意,在vim
上,您可以使用gg
代替G
。
与@Bonnie Varghese的答案相比较:
:45,101d[enter]
上面的命令从他的回答中需要9次输入,包括 enter ,其中我的答案需要8-10次打字。因此,我的方法的速度是可比的。
就个人而言,我自己更喜欢45Gd101G
而不是:45,101d
,因为我喜欢坚持vi命令的语法,在这种情况下是:
+---------+----------+--------------------+
| syntax | <motion> | <operator><motion> |
+---------+----------+--------------------+
| command | 45G | d101G |
+---------+----------+--------------------+
答案 7 :(得分:3)
如果你想在特定的行触发后删除一个范围,你可以使用类似的东西
:g/^TMPDIR/ :.,+11d
每次遇到^TMPDIR
后删除11行(包括)。
答案 8 :(得分:1)
是dxd,而不是ddx
如果要删除5行,请将光标移至要删除的第一行的开头和d5d
答案 9 :(得分:1)
要删除所有行,请使用 - ESC gg dG 要删除几行,请说5然后使用ESC 5dd
答案 10 :(得分:0)
类型 :set number
(用于编号的行)。
答案 11 :(得分:-1)
可以按照以下步骤进行。