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

可能的方法:

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

另外,我使用的是 Python,因此不幸的是基于大括号的解决方案不起作用。

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

有帮助吗?

解决方案

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

地图 ,a ma[[kf(a

所以它可以带你到函数定义,搜索第一次出现的“(”,然后让你进入插入模式。

其他提示

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

可能是这样的:

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

?

注意:

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

哈特哈,

地图 ,a ma[{F(a

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

我不知道有什么方法可以万无一失地进入函数的开头。如果您对标签保持一致,则可以执行以下操作:

地图 ,a ma? 函数 :nohlf(a

其中,如果您在定义函数之前不使用单个选项卡,则可以更改为适当的值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top