正如你们大多数人可能知道的那样,您可以使用%
在线上向前搜索来查找下一个配对的大括号/中括号/括号并移动到其匹配的伙伴:
|a|rray[index] = value;
" |e| is the cursor; hit %:
array[index|]| = value;
我希望有一个类似的键可以在线向后搜索,例如:
array[index] = value|;|
" |;| is the cursor again, hit the key I'm looking for:
array|[|index] = value;
大多数 vim 命令都有向后和向前的功能,所以看起来应该如此。它没有伙伴吗?如果是这样,那是因为一旦它在配对的角色他们会表现得一样吗?
答案1
如果你真的想要向后搜索常见的匹配字符,您可以使用以下vim
特定命令之一:
[(
...(转到上一个不匹配的(
字符)[{
...(转到上一个不匹配的{
字符)
这两个命令有匹配的转发伙伴:
])
...(转到下一个不匹配的)
字符)]}
...(转到下一个不匹配的}
字符)
还有其他类似的#ifdef
C 注释命令。
vim
您可以使用命令找到更多信息:help %
。
答案2
% 找到匹配的括号。因此,如果您在 ( 或 { 上,它将向前搜索。
如果您位于 } 或 ) 上,它将向后搜索。
% 没有方向性,它只是寻找匹配的括号。
答案3
我刚刚尝试过:map ^] ^%%
(这里用^]
= Ctrl+ v Ctrl+5来类比%
= Shift+ 5)。
它适用于给定的特定情况,但因为它不会从光标向后搜索,所以它总是选择行上的第一个左括号,如果找不到任何匹配项,则将光标保留在行的开头。
这是一个更好的解决方案;它很丑陋,可能还有很大的简化空间,但我认为语义完全正确(如果没有开放括号,则不会移动光标,并移动到第一的在当前列之前打开括号)。
:map ^] ^[:call search("[({[]", "bes", line("."))^M
为了
^]
= Ctrl+ v Ctrl+5^[
= Ctrl+v Esc^M
= Ctrl+v Return