"dt" Vim 中的动作使用多行
"dt" motion in Vim working with mutiple lines
我经常在 Vim 中使用 dt-some_character
动作来删除 some_character
之前的每个字符。但是,它仅适用于单行。
是否有适用于多行的类似物?
您可以使用 d/some-character<CR>
(例如 d/e
然后按 Enter 删除下一个 'e')。
但是请注意,此 将 修改 last-search register
("/
)。
编辑 :
与F
对应的是?
(向后搜索)(d?X
包含在内,所以没有dT
)。
有几个 插件 扩展了内置的 f
/ t
动作以覆盖多行:
另一个方向相同,但采用不同方法的方法:
如果要对多行进行同样的操作:
您可以使用 j.
and/or 宏
例如删除 2 行中的字符“7”(无宏):
df7j.
要删除到<n>
行的字符'7',需要录制宏:
qqdf7j<Esc><n>@q
如果要多行删除从当前位置到第7个字符(也会删除第7个字符):
v/7<Esc>x
正如 Marth 所说,您可以使用 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
将光标放在 的 i 上第一行是 ,给出 d/line
你会得到:
This line - 01
This is a new line - 02
And this is the last line - 03
现在如果你给 vim dn
命令,你会得到:
This line - 02
And this is the last line - 03
还要记住,您可以在动作中使用 count 参数,因此如果您在上面的示例中给出 d3/line
命令而不是 d/line
,你会得到:
This line - 03
(我们已经说过 vim:删除第三次出现的 "line")
我经常在 Vim 中使用 dt-some_character
动作来删除 some_character
之前的每个字符。但是,它仅适用于单行。
是否有适用于多行的类似物?
您可以使用 d/some-character<CR>
(例如 d/e
然后按 Enter 删除下一个 'e')。
但是请注意,此 将 修改 last-search register
("/
)。
编辑 :
与F
对应的是?
(向后搜索)(d?X
包含在内,所以没有dT
)。
有几个 插件 扩展了内置的 f
/ t
动作以覆盖多行:
另一个方向相同,但采用不同方法的方法:
如果要对多行进行同样的操作:
您可以使用 j.
and/or 宏
例如删除 2 行中的字符“7”(无宏):
df7j.
要删除到<n>
行的字符'7',需要录制宏:
qqdf7j<Esc><n>@q
如果要多行删除从当前位置到第7个字符(也会删除第7个字符):
v/7<Esc>x
正如 Marth 所说,您可以使用 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
将光标放在 的 i 上第一行是 ,给出 d/line
你会得到:
This line - 01
This is a new line - 02
And this is the last line - 03
现在如果你给 vim dn
命令,你会得到:
This line - 02
And this is the last line - 03
还要记住,您可以在动作中使用 count 参数,因此如果您在上面的示例中给出 d3/line
命令而不是 d/line
,你会得到:
This line - 03
(我们已经说过 vim:删除第三次出现的 "line")