2010-09-27 83 views
2

我有一个基本的VIM功能问题:(我试着用搜索引擎并不能找到答案)VIM自定义函数的定义/位置

  1. 我如何列出所有自定义 功能(我做:功能,不能 找到我的自定义功能)
  2. 如何在自定义函数列表 (或存储它们的位置)中获得 函数的定义。

谢谢您的帮助

回答

7

假设你的函数被调用MyFunction的,那么下面的工作对我来说:

:verbose function My<tab> 

(用于<标签>我的意思其实按标签)

如果你的函数在vim中加载,它应该显示在那里,你可以看到它的定义。

+0

感谢,现在我可以做(:详细函数列出所有函数及其位置。:详细功能partOfName ,和:详细函数functionName) – kite 2010-09-27 08:22:44

+1

@kite'verbose function'不会列出* all *函数,只有那些不是匿名的函数。例如,我的一些插件根本不包含非匿名函数。 – ZyX 2010-09-27 08:38:12

2

如果你不能找到在function输出不带参数的自定义功能,那么它可能是宣布类似的匿名函数:

let g:dict={} 
function g:dict.f() 
    echo "here" 
endfunction 

在这种情况下,以获取其定义是使用function g:dict.f的唯一途径(提前verbose作为@skeept建议知道它在哪里定义)。请注意,您无法在此处使用选项卡填写,并且无法获取所有匿名函数的列表。

代替g:dict.ffunction g:dict.f你可以使用function {N},其中N是返回匿名函数数,例如function {substitute(string(g:dict.f), '^.*\(\d\+\).*$', '\1', '')}任何表情。或者只是function {242}如果你得到的是一个这样的错误:Error detected while processing function 243..242:并希望看到函数242的定义。

+0

感谢匿名函数方法 – kite 2010-09-27 09:32:32