用于向函数添加参数的Vim快捷方式

时间:2008-09-18 18:09:21

标签: vim keyboard-shortcuts

是否有Vim快捷方式可以跳转到当前函数的参数列表?我经常发现自己需要弄乱一个函数的参数列表,并且必须这样做是很烦人的吗?def或?函数或10k或者什么是你,直到我最终到达它,然后/(或t(或者5e到达参数列表中的正确位置,依此类推。如果我能够点击,例如并且在参数列表的结尾/开头立即进入插入模式,那将是很好的。

可能的方法:

  • 折叠
  • 标记支持(ctags)

此外,我正在使用Python,因此基于花括号的解决方案不幸无法使用。

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

3 个答案:

答案 0 :(得分:3)

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

可能是这样的:

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

NB:

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

HTH,

答案 1 :(得分:1)

map,a ma [{F(a

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

我不知道如何以万无一失的方式进入函数的开头。如果你对你的标签保持一致,你可能会做这样的事情:

map,ma?function:nohlf(a

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

答案 2 :(得分:1)

开始使用函数的简单方法是使用[[。所以你使用

map,a ma [[kf(a

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