首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SpaceVim和MacVim上使用并无法获得插件脚本位置

在SpaceVim和MacVim上使用并无法获得插件脚本位置
EN

Stack Overflow用户
提问于 2018-11-13 06:37:50
回答 1查看 725关注 0票数 1

我已经尝试过7年前发布的所有解决方案https://stackoverflow.com/questions/4976776/how-to-get-path-to-the-current-vimscript-being-executed/53274039#53274039,现在(2018)、MacVim (8.1)或新一代(0.3.1)都没有一个为我工作。由于我的问题一直被删除,所以我决定提出一个新的问题。

自从7年前的最后一个答案以来,Vim有什么变化吗?所有这些解决方案都给出了当前文件的位置,而不是脚本的位置。SpaceVim是否影响这些功能的工作方式?

这就是我想要修复的代码:

代码语言:javascript
复制
function! TeaCodeExpand()
    <<some code>>
    echom fnamemodify(resolve(expand('<sfile>:p')), ':h')
    <<other code>>
endfunction

我有一个回显显示应该是当前脚本文件的路径,但是它总是返回当前编辑的文件。下一行是在vimscript文件上方的目录中执行一个AppleScript。我可以硬编码路径,一切都很好。但是,我不能让它按原样工作。完整代码在这里:github.com/raguay/TeaCode-Vim-转接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-13 09:48:58

要让<sfile>扩展到插件的文件中,必须在脚本来源为时进行扩展。请参阅:help :

执行":source“命令时,将替换为源文件的文件名。在执行函数时,替换为:“function {function-name}{lnum}”。

如果以后需要函数中的filespec,则需要将其存储在(脚本局部变量)中,并从函数中引用该变量:

代码语言:javascript
复制
let s:scriptPath = fnamemodify(resolve(expand('<sfile>:p')), ':h')
function! TeaCodeExpand()
    <<some code>>
    echom s:scriptPath
    <<other code>>
endfunction
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53275160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档