我知道你可以使用 来引用脚本局部函数,<SID>
但是脚本局部变量呢?我尝试了以下方法,但失败<c-space>
了:
let s:testVar = "foo"
function! s:GetTestVar()
return s:testVar
endfunction
nnoremap <space> :echo <SID>GetTestVar()<cr>
nnoremap <c-space> :echo <SID>testVar<cr>
您可以通过编写访问器函数来解决这个问题(如上所述),但有时能够直接引用会更好。
答案1
不,脚本局部变量确实是脚本私有的。你确实必须编写一个访问函数。
在插件中,这不是什么大问题,因为它们应该将函数(以及脚本的状态变量)分离到自动加载脚本,因此映射/命令(在插入无论如何,如果您要使用任何脚本,都必须引用另一个脚本。
答案2
我原本想评论这个,但我需要 50 点声望。这是一个小建议,我希望它能达到目的。
可以使用(在定义 var 的脚本中)
exe "nnoremap <c-space> :echo ".s:testVar."<cr>"
我使用它来在 .vimrc 中定义的映射中插入 s:var 路径。如果我错过了重点,或者其他什么,请告诉我...