Vim 内部函数调用时转到定义(gd)

Vim 内部函数调用时转到定义(gd),vim,Vim,如果我正在编辑函数调用,如: many_params(param1, "a long...string", p|aram3); // Cursor located at | 然后键入gd将跳转到param3的定义,而不是many_params。在不使用^的情况下,将光标移动到多个参数最有效的习惯用法是什么 为了澄清,请不要回答^,因为我想要一个与以下内容兼容的成语: // Lets jump to func3's definition func1(func2(123, "aaaaa"), fu

如果我正在编辑函数调用,如:

many_params(param1, "a long...string", p|aram3); // Cursor located at |
然后键入
gd
将跳转到
param3
的定义,而不是
many_params
。在不使用
^
的情况下,将光标移动到
多个参数
最有效的习惯用法是什么

为了澄清,请不要回答
^
,因为我想要一个与以下内容兼容的成语:

// Lets jump to func3's definition
func1(func2(123, "aaaaa"), func3("bbbbb", 3|, 4, 5));

我唯一的想法是:

  • 转到左括号-
    F(
  • 向后移动一个单词-
    b

因此,该命令是
F(b
。但是它不能处理
func1(“abc(d),222 | 2)
这样的文本,我觉得有点脏,但是你也可以处理嵌套的括号(h。请注意,这会将括号中的位拖动到拖动缓冲区,这可能不太理想,但您可以通过映射到
“\u ya”来解决此问题(h
。这将转到封闭括号的开括号,随后的执行将转到后续的括号级别。我不知道还有其他方法可以不被插入的括号打断而进入封闭括号


如果你使用这个,你需要使用
h
而不是
b
,以防你在一行中有多个括号……但是再一次,也许
b
的行为是可取的。

很好的解决方案。我认为有可能找到一个好的映射。当我遇到这种问题时,我总是尝试得到一个映射。Thanks,我一直在使用
%%b
,但是
%%
的扩展速度慢了下来。我对Vim比较陌生,所以
F(
不明显。