Пытаясь автоматизировать добавление плагинов в vim на основе типа файла, я решил создать простую функцию в своем файле .vimrc. Я использую Vundle в качестве менеджера плагинов, и, как того требует Vundle, тип файла должен быть отключен. Я решил сохранить тип файла в переменной и впоследствии использовать его в списке плагинов внутри Vundle. Вот соответствующий раздел .vimrc:
set nocompatible " be iMproved, required
filetype plugin indent on
let var = &ft
echo var
function Plugin_set(var)
if (a:var == "python")
Plugin 'Python-mode-klen'
else
Plugin 'scrooloose/syntastic'
endif
endfunc
"Vundle Section Begin
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" All of your Plugins must be added after the following line
Plugin 'Tagbar'
Plugin 'VundleVim/Vundle.vim'
Plugin 'surround.vim'
Plugin 'better-snipmate-snippet'
Plugin 'bling/vim-airline'
Plugin 'Tabular'
Plugin 'rodjek/vim-puppet'
call Plugin_set(var)
" All of your Plugins must be added before the following line
call vundle#end() " required
filetype plugin indent on " required
Я не получаю вывода в строке «echo var», где я ожидаю появления типа файла. Тогда, конечно, оператор if оценивается как false, а else используется независимо от того, какой фактический тип файла я открываю.
Но когда я пытаюсь дать те же команды в оболочке vim, например:
:let var = &ft
:echo var
Я получаю фактический тип файла, назначенный переменной var.
Оператор if также оценивается как true, если я просто использую let var = "python" вместо let var = &ft
Мне кажется, я не понимаю правил присвоения значений параметров переменным.
Но я просто понятия не имею, что здесь не так.
Я очень ценю вашу помощь.