7

Я хотел установить переменную VIMHOME таким образом (общий для Windows и Linux),

let $VIMHOME=expand("%:p")."/..",

так что VIMHOME - это «~/.vim» в Linux или «путь /к /vimfiles» в Windows.

Я поместил это в файл var.vim и поместил в каталог плагинов. Он загружается правильно, но VIMHOME установлен только на "./.. ".

Как я могу получить полный путь к файлу, используя expand?

Есть ли простой способ установить VIMHOME?

Изменить: я изменил выражение на:

let $VIMHOME=expand("<sfile>:p:h")

Теперь VIMHOME установлен на "~/.vim/plugin" в Linux.

Мое требование - установить VIMHOME в «~/.vim» или «path /to /vimfiles». Но,

let $VIMHOME=expand("<sfile>:p:h")
let $VIMHOME=expand("$VIMHOME:p:h")

не работает.

Как я могу решить это?

2 ответа2

12

Поместите это в свой файл плагина var.vim :

let $VIMHOME=expand('<sfile>:p:h:h')

% в раскрытии будет относиться к редактируемому файлу (то есть к пути, указанному в командной строке). <sfile> будет ссылаться на файл 'sourced' (т. е. файл плагина или запуска, который активен при выполнении расширения).

Модификатор :p делает абсолютное имя пути, а суффикс :h удаляет последний компонент пути (то есть имя файла в этом случае).

3

Это то, что я искал,

if has('win32') || has ('win64')
    let $VIMHOME = $VIM."/vimfiles"
else
    let $VIMHOME = $HOME."/.vim"
endif

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