gpt4 book ai didi

vim - 与foldexpr

转载 作者:行者123 更新时间:2023-12-01 20:21:50 25 4
gpt4 key购买 nike

我正在阅读Learn Vim Script the Hard Way在练习将折叠函数转换为本地脚本函数时遇到了一些让我困惑的事情。

我尝试这样做:

setlocal foldexpr=<SID>GetPotionFold(v:lnum)

并将所有函数重命名为以 s: 开头

令我惊讶的是,这不起作用,每行的折叠级别都是 0?如果我将 GetPotionFold 放入全局范围,它就会起作用。将其分配给选项时是否必须使用全局范围的函数?为什么?

最佳答案

<SID>可以在映射或菜单中使用,遗憾的是不能在选项中使用。 (这是实现中的一个缺点。)

您要么必须将其翻译为实际的 <SNR>NNN_前缀( s:SID() 处有一个 :help <SID> 示例函数),或者使用可从定义该函数的脚本外部访问的不同作用域。值得赞扬的是,您希望避免破坏全局函数 namespace ,因为这很容易发生名称冲突。

一个不错的技巧是使用autoload函数前缀;它不仅适用于自动加载脚本,还可以在其他地方使用,例如在插件脚本中。只需添加脚本名称,您将拥有一个可以从任何地方调用的函数,但范围仅限于脚本名称:

:function! MyScriptName#GetPotionFold(lnum)
...
:setlocal foldexpr=MyScriptName#GetPotionFold(v:lnum)

关于vim - <SID> 与foldexpr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17640073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com