Script Vim: É possível referir-se a variáveis locais de script em mapeamentos?

3

Eu sei que você pode se referir a funções locais de script usando <SID> , mas e as variáveis locais de script? Eu tentei o seguinte e acertar <c-space> falha:

let s:testVar = "foo"
function! s:GetTestVar()
  return s:testVar
endfunction

nnoremap <space> :echo <SID>GetTestVar()<cr>
nnoremap <c-space> :echo <SID>testVar<cr>

Você pode contornar isso escrevendo funções de acesso (como acima), mas às vezes seria bom poder se referir diretamente.

    
por Steve Vermeulen 15.03.2013 / 23:33

2 respostas

5

Não, as variáveis locais de script são realmente privadas para o script. Você tem que escrever uma função acessadora, de fato.

Em plugins, isso não é um problema, porque eles devem separar as funções (e com elas as variáveis de estado do script) em scripts autoload , então mapeamentos / comandos (definidos no < em> plugin script) tem que se referir a outro script, de qualquer maneira.

    
por 16.03.2013 / 11:48
2

Originalmente, queria comentar isso, mas preciso de 50 representantes. Aqui está uma pequena sugestão, e espero que esteja no alvo.

é possível usar (dentro do script onde o var está definido)

exe "nnoremap <c-space> :echo ".s:testVar."<cr>"

Estou usando isso para a inserção do caminho s: var nos mapeamentos definidos no meu .vimrc. Deixe-me saber se eu perdi o ponto, ou algo assim ...

    
por 14.06.2017 / 18:14