如何在vim脚本中找到匹配的大括号或方括号的位置
我知道使用如何在vim脚本中找到匹配的大括号或方括号的位置,vim,vim-plugin,Vim,Vim Plugin,我知道使用%我可以跳转到匹配的大括号和方括号,但是如果我只想知道匹配的大括号和方括号的位置怎么办?有什么函数可以得到它吗?像 int test(int a){return a} 我的光标在这行的末尾,在}之后,因此列是25,我想知道它匹配的大括号({)的位置,应该是16。或者你可以玩%然后录制光标()或者行()+列(),或者你可以使用搜索pairpos()),但别忘了指定一条规则来忽略注释上下文中的括号字符 e、 g 您可以玩%,然后录制cursorpos()或line()+col()。也可以
%
我可以跳转到匹配的大括号和方括号,但是如果我只想知道匹配的大括号和方括号的位置怎么办?有什么函数可以得到它吗?像
int test(int a){return a}
我的光标在这行的末尾,在
}
之后,因此列是25,我想知道它匹配的大括号({
)的位置,应该是16。或者你可以玩%
然后录制光标()
或者行()
+列()
,或者你可以使用搜索pairpos())
,但别忘了指定一条规则来忽略注释上下文中的括号字符
e、 g
您可以玩
%
,然后录制cursorpos()
或line()
+col()
。也可以使用searchpairpos()
,但别忘了指定一条规则来忽略注释上下文中的括号字符
e、 g
您只需按
%%
@romani即可。正如我所说,我知道%%
可以移动到匹配的对,但我想知道的是行号和列号,按%%不为我做任何事情。1.按%%
将光标移动到相应的大括号。2.读取状态行中的行/列。3.按%再次使用code>返回。快速且便宜。如果您确实需要复杂的解决方案,请参阅:help searchpairpos()
。事实上,我可以这样做,我已经编写了与您所说的相同的代码,我只是想知道是否有更好的选择,可以在不更改光标位置的情况下获得位置。无论如何,感谢您的帮助。如果您不想更改光标位置,则必须使用searchpairpos()
带有n
标志。您只需按%%
@romani即可。正如我所说,我知道%%
可以移动到匹配的对,但我想知道的是行号和列号,按%%do nothing for me。1.按%%
将光标移动到相应的大括号。2.读取y中的行/列我们的状态行。3.再次按%
返回。快速且便宜。如果您确实需要复杂的解决方案,请参阅:help searchpairpos()
。事实上,我可以这样做,我已经编写了与您所说的相同的代码,我只是想知道是否有更好的选择,可以在不更改光标位置的情况下获得位置。无论如何,感谢您的帮助。如果您不想更改光标位置,则必须使用searchpairpos()
带有n
标志。
let s:skip_comments = 'synIDattr(synID(line("."), col("."), 0), "name") =~?'
\ . '"string\\|comment\\|doxygen"'
function! s:SearchBracket()
let flag = 'cnzW'
return searchpairpos('{', '', '}', flag, s:skip_comments)
endfunction