Vim Script: можно ли ссылаться на локальные переменные скрипта в отображениях?

994
Steve Vermeulen

Я знаю, что вы можете ссылаться на локальные функции скрипта, используя, <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> 

Вы можете обойти это, написав функции доступа (как указано выше), но иногда было бы неплохо иметь возможность ссылаться напрямую.

3

2 ответа на вопрос

5
Ingo Karkat

Нет, локальные переменные сценария действительно являются частными для сценария. Вы действительно должны написать функцию доступа.

В плагинах это не такая большая проблема, потому что они должны разделять функции (и вместе с ними переменные состояния скрипта) на скрипты автозагрузки, поэтому отображения / команды (определенные в скрипте плагина ) должны в любом случае ссылаться на другой скрипт ,

2
dabyly

Я изначально хотел это прокомментировать, но мне нужно 50 респ. Вот небольшое предложение, и я надеюсь, что его цель.

его можно использовать (в сценарии, где определена переменная)

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

Я использую это для вставки пути s: var в отображениях, определенных в моем .vimrc. Дайте мне знать, если я пропустил суть, или что-то ...

Обратите внимание, что это будет захватывать значение переменной при выполнении строки, а не использовать «живое» значение при запуске отображения. Kevin Cox 5 лет назад 0