Vim 脚本:是否可以在映射中引用脚本局部变量?

Vim 脚本:是否可以在映射中引用脚本局部变量?

我知道你可以使用 来引用脚本局部函数,<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 路径。如果我错过了重点,或者其他什么,请告诉我...

相关内容