#vim #vim-plugin
Вопрос:
Я просто пытаюсь установить файл словаря в vimscript для автозаполнения. Это прекрасно работает следующим образом.
setlocal dictionary =C:Usersearikvimfilespackpluginsstartvim-baanftpluginfontawesome.txt
Что я хочу сделать, так это сохранить этот длинный путь в переменной и использовать его.
let g:path = fnamemodify(resolve(expand('<sfile>:p')), ':h')
let g:path = g:path . 'fontawesome.txt'
setlocal dictionary =g:path
Здесь я определяю глобальную переменную g:path
. С тех пор как fontawesome.txt файл и файл сценария находятся в одной папке ~ftplugin
, я нахожу расположение файла текущего файла сценария и добавляю fontawesome.txt в конце концов. Когда я это делаю echo g:path
, это выглядит следующим образом, что выглядит правильно.
C:Usersearikvimfilespackpluginsstartvim-baanftpluginfontawesome.txt
Однако, когда я спрашиваю Vim setlocal dictionary?
, я получаю это;
dictionary=g:path
Вместо того , чтобы принимать значение g:path
, оно принимает g:path
значение в виде строки или пути. Есть ли обходной путь для этого? Любая помощь будет высоко оценена!
Ответ №1:
Вы должны использовать :help :let.=
, который обрабатывает выражения, вместо :help :set =
того , который не:
let amp;l:dictionary .= ',' .. g:path
Комментарии:
1. Это кажется гораздо более чистым решением, но я получаю ошибку ;
Wrong variable type for =
. И можно ли использовать let для локальных назначений?
Ответ №2:
Вы можете использовать :execcute {expr1} ..
, который выполняет строку, полученную в результате вычисления {expr1}
в качестве команды Ex.
execute 'setlocal dictionary ='.g:path
Комментарии:
1. Это излишне сложно.
2.
let amp;dictionary =
похоже, выдает ошибку E734. Его можно использоватьlet amp;dictionary = amp;dictionary.','.g:path
, но он может плохо обрабатывать ведущее,
и дублированное значение.