" DT" Vim中的动作与多条线一起工作

时间:2015-05-13 10:21:40

标签: vim text-editor

我经常在Vim中使用dt-some_character动作,将每个字符删除到some_character。但是,它仅适用于单行。

是否有适用于多行的类似物?

4 个答案:

答案 0 :(得分:7)

您可以使用d/some-character<CR>(例如d/e,然后输入以删除下一个'e')。

但请注意,此修改last-search register"/)。

修改

F的对应方为?(向后搜索)(d?X包含在内,所以没有dT)。

答案 1 :(得分:3)

有几个插件可以扩展内置的f / t动作以涵盖多行:

另一个走向同一方向,但采用不同的方法:

答案 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.和/或宏

例如,删除直到两行上的字符'7'(没有宏):

df7j.

要删除<n>行上的字符“7”,您需要录制一个宏:

qqdf7j<Esc><n>@q

如果你想从当前位置删除,直到多行上的字符7 (它也会删除7个字符):

v/7<Esc>x