VIM自定义函数定义/位置

3

我有一个基本的VIM功能问题:(我尝试过谷歌搜索,但找不到答案)

  1. 如何列出所有自定义函数。(我使用了 :function 命令,但找不到我的自定义函数)
  2. 如何获取自定义函数列表中函数的定义(或它们存储在哪里)。

谢谢你的帮助。

2个回答

8
假设您的函数名为MyFunction,则以下内容适用于我:
:verbose function My<tab>

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

(对于<tab>,我实际上是指按下tab键)


谢谢,现在我可以使用(:verbose function)来列出所有函数及其位置。使用(:verbose function partOfName<tab>)或(:verbose function functionName)可以查询特定函数的详细信息。 - kite
1
@kite verbose function 不会列出 所有 函数,只会列出那些不是匿名函数的函数。例如,我的一些插件根本不包含非匿名函数。 - ZyX

2

如果您在没有参数的function输出中找不到自定义函数,那么它很可能是像这样声明的匿名函数:

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

在这种情况下,获取其定义的唯一方式是使用function g:dict.f(如@skeept建议的那样在前面加上verbose以了解它的定义位置)。请注意,您无法在此处使用制表符完成,并且无法获取所有匿名函数的列表。
您可以使用function {N}代替function g:dict.f中的g:dict.f,其中N是任何返回匿名函数编号的表达式,例如function {substitute(string(g:dict.f), '^.*\(\d\+\).*$', '\1', '')}。或者如果您只收到像这样的错误Error detected while processing function 243..242:并希望查看函数242的定义,则只需使用function {242}即可。

感谢匿名函数方法。 - kite

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接