%VIM密钥命令

时间:2008-11-05 01:28:16

标签: vim

有没有办法让vim中的%找到下一个([{或者其他什么,即使它不在同一行上?

示例:

int main(int argc, char ** argv) {
     #Your cursor is somewhere in this comment, I want
     #it to get to the ( after printf
     printf("Hello there.\n");
}

4 个答案:

答案 0 :(得分:4)

如果你想在后续行找到开口大括号,没有插件,只需进入正常模式并输入:

/{ [enter]

{是你寻找的支撑类型。

然后,您可以使用 n N 浏览它们。

映射 F12 键以打开和关闭搜索突出显示use this trick.

答案 1 :(得分:2)

如果我理解正确的话,即使在下一行,你也试图让它找到开场大括号。如果你抱怨它没有找到结束支撑,除非整个事情是一行,我不知道为什么那不起作用。

在任何情况下,如果您希望%有超级大国,matchit plugin就是起点。它包含在正态分发中,因此您不必下载它。只需添加

:runtime macros/matchit.vim

对于你的.vimrc,%也会知道很多新技巧(如果匹配balaced XML标签,那么if / then / end if语句是用关键字做的语言)等等。它不会直接解决你的请求,因为matchit使用与普通%相同的限制(它在光标上或之后开始匹配,在同一行上)。但是因为它可以使用正则表达式搜索作为匹配标记(而不仅仅是字符),所以应该可以配置它以使开放式表达式为。 \ n。 {或某些符合该条件的符号,然后在更远的地方拿起支架。

答案 2 :(得分:1)

那令人费解......对我来说,%找到匹配的任何{[(无论距离匹配多少行。我的.vimrc中没有看到任何会改变这种行为的东西。)< / p>

答案 3 :(得分:1)

看起来Jim Burger有它,但万一你实际上是在询问如何搜索这些东西:

/ [{[([] [Enter]

这将找到下一个符号。

顺便说一句:在这种情况下,vim足够聪明,可以找出你想要的东西,但是你经常需要用'\'来逃避正方形或圆形括号。例如,要搜索下一个右括号,请键入(注意\]):

/ [\]})] [输入]