3

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

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

2 ответа2

5

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

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

2

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .