在 neovim 和 MacVim 上使用 SpaceVim,无法获取插件脚本的位置
Using SpaceVim on neovim and MacVim and can't get location of plugin script
我已经尝试了 7 年前发布的所有解决方案 并且 none 在当前 (2018) Mac 上为我工作Vim (8.1) 或 neovim (0.3.1)。由于我的问题一直被删除,所以我决定提出一个新问题。
自 7 年前的最后一个回答以来,Vim 有什么变化吗?所有这些解决方案都为我提供了当前文件的位置,而不是脚本的位置。 SpaceVim 是否影响这些功能的工作方式?
这是我要修复的代码:
function! TeaCodeExpand()
<<some code>>
echom fnamemodify(resolve(expand('<sfile>:p')), ':h')
<<other code>>
endfunction
我有一个 echom 来显示应该是当前脚本文件的路径,但它总是 returns 当前编辑的文件。下一行是在 vimscript 文件上面的目录中执行一个 AppleScript。我可以对路径进行硬编码,一切正常。但是,我无法让它按原样工作。完整代码在这里:github.com/raguay/TeaCode-Vim-Extension
要<sfile>
扩展到插件的文件规范,扩展必须在获取脚本 时进行。见 :help :<sfile>
:
<sfile> When executing a ":source" command, is replaced with the
file name of the sourced file.
When executing a function, is replaced with:
"function {function-name}[{lnum}]"
如果稍后在函数中需要 filespec,则需要将其存储在(脚本本地)变量中,并从函数中引用它:
let s:scriptPath = fnamemodify(resolve(expand('<sfile>:p')), ':h')
function! TeaCodeExpand()
<<some code>>
echom s:scriptPath
<<other code>>
endfunction
我已经尝试了 7 年前发布的所有解决方案 并且 none 在当前 (2018) Mac 上为我工作Vim (8.1) 或 neovim (0.3.1)。由于我的问题一直被删除,所以我决定提出一个新问题。
自 7 年前的最后一个回答以来,Vim 有什么变化吗?所有这些解决方案都为我提供了当前文件的位置,而不是脚本的位置。 SpaceVim 是否影响这些功能的工作方式?
这是我要修复的代码:
function! TeaCodeExpand()
<<some code>>
echom fnamemodify(resolve(expand('<sfile>:p')), ':h')
<<other code>>
endfunction
我有一个 echom 来显示应该是当前脚本文件的路径,但它总是 returns 当前编辑的文件。下一行是在 vimscript 文件上面的目录中执行一个 AppleScript。我可以对路径进行硬编码,一切正常。但是,我无法让它按原样工作。完整代码在这里:github.com/raguay/TeaCode-Vim-Extension
要<sfile>
扩展到插件的文件规范,扩展必须在获取脚本 时进行。见 :help :<sfile>
:
<sfile> When executing a ":source" command, is replaced with the file name of the sourced file. When executing a function, is replaced with: "function {function-name}[{lnum}]"
如果稍后在函数中需要 filespec,则需要将其存储在(脚本本地)变量中,并从函数中引用它:
let s:scriptPath = fnamemodify(resolve(expand('<sfile>:p')), ':h')
function! TeaCodeExpand()
<<some code>>
echom s:scriptPath
<<other code>>
endfunction