题
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
其中,如果您在定义函数之前不使用单个选项卡,则可以更改为适当的值。
不隶属于 StackOverflow