我经常在Vim中使用dt-some_character
动作,将每个字符删除到some_character
。但是,它仅适用于单行。
是否有适用于多行的类似物?
答案 0 :(得分:7)
您可以使用d/some-character<CR>
(例如d/e
,然后输入以删除下一个'e')。
但请注意,此将修改last-search register
("/
)。
修改:
F
的对应方为?
(向后搜索)(d?X
包含在内,所以没有dT
)。
答案 1 :(得分:3)
答案 2 :(得分:2)
正如 Marth 所说,您可以使用3rd record
命令。由于您已进行搜索,因此您可以将d/a_pattern_to_be_searched
(下一个搜索结果)[或n
(上一个搜索结果)]命令与删除结合使用。
让我们看一个例子,假设你有这样的行:
N
如果光标位于第一行的 ,则会显示This is a first line - 01
This is a new line - 02
And this is the last line - 03
:
d/line
现在,如果你给vim This line - 01
This is a new line - 02
And this is the last line - 03
命令,你会得到:
dn
另外请记住,你可以在动作中使用 count 参数,所以如果你在上面的例子中给出This line - 02
And this is the last line - 03
命令而不是d3/line
,你会得到:
d/line
(我们已经说过vim:删除第三次出现的“line”)
答案 3 :(得分:-1)
如果您想在sevral line上进行相同的操作:
您可以使用j.
和/或宏
df7j.
要删除<n>
行上的字符“7”,您需要录制一个宏:
qqdf7j<Esc><n>@q
如果你想从当前位置删除,直到多行上的字符7 (它也会删除7个字符):
v/7<Esc>x