Vim为函数添加参数的快捷方式

时间:2020-03-06 14:22:42  来源:igfitidea点击:

有一个Vim快捷方式可以跳转到当前函数的参数列表吗?我经常发现自己需要弄乱一个函数的参数列表,不得不烦恼吗?def或者?function或者10k或者尚有什么,直到我终于找到它为止,然后是(或者5e到达参数列表中的正确位置,依此类推。例如,我可以直接按一下-a并在参数列表的末尾/开始处立即进入插入模式,那将是很棒的。

可能的方法:

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

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

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

解决方案

地图[ma [{F(a

点击,a进入参数列表,然后点击" a"返回调用时的位置。警告:[{跳回到最后一个不匹配的{字符,因此,如果我们处于循环或者其他控制结构内,它将带我们回到其开头。

我不知道以一种简单的方法来开始该函数的方法。如果我们对标签一致,则可以执行以下操作:

地图,功能:nohlf(a

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

免责声明,我不了解Python,我假设可以从问题中使用"函数"或者" def"来标识Python函数。只需更改正则表达式即可。

可能是这样的:

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

注意:

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

HTH,

开始使用功能的简单方法是使用[[。所以你用

地图[ma [[kf(a

因此它可以带我们到函数定义,搜索"("的第一个匹配项,然后将我们置于插入模式。