1

是否有用于跳转到当前函数的参数列表的 Vim 快捷方式?我经常发现自己需要弄乱函数的参数列表,而且在我最终得到它之前必须执行 ?def 或 ?function 或 10k 或你有什么,然后 /( 或 t(或 5e 以到达参数列表中的正确位置,依此类推。例如,如果我可以点击 ,a 并立即在参数列表的末尾/开头进入插入模式,那就太好了。

可能的方法:

  • 折叠式的
  • 标签支持 (ctags)

此外,我正在使用 Python,因此基于花括号的解决方案很遗憾无法正常工作。

如果不存在这样的快捷方式,我将只写一个并将其发布在这里作为答案。:-)

4

3 回答 3

3

免责声明,我不了解 Python,我假设 Python 函数可以通过您的问题中的“函数”或“定义”来识别。只需更改正则表达式即可。

可能是这样的:

   :nnoremap <buffer> [m :call search('def\|function', 'b')<cr>f(

?

注意:

  • 为了不弄乱搜索历史,我使用了 search() ;searchpair() 可能是更好的选择,因为它只会跳转到我们所在函数的定义,而不是之前的函数。
  • 由于这仅适用于 Python,因此我使用 <buffer> 以免弄乱非 Python 文件中的键绑定;这个映射最好在 python ftplugin 中定义。

高温下,

于 2008-09-18T19:01:43.707 回答
1

地图,a ma[{F(a

点击 ,a 转到参数列表,然后点击 `a 返回调用 ,a 时所在的位置。警告: [{ 跳回到最后一个不匹配的 { 字符,所以如果你在一个循环或其他控制结构中,它会带你到它的开头,而不是。

我不知道以一种万无一失的方式开始函数的方法。如果您对标签保持一致,则可以执行以下操作:

地图,ma?function :nohlf(a

在哪里,如果您在定义函数之前不使用单个选项卡,您将更改为适当的值。

于 2008-09-18T18:23:51.957 回答
1

到达函数开头的最简单的方法是使用 [[. 所以你用

地图,a ma[[kf(a

因此它可以将您带到函数定义,搜索“(”的第一次出现,然后将您置于插入模式。

于 2009-01-08T20:01:52.697 回答