2016-01-17 3 views
0

В попытке автоматизировать добавление плагинов в vim на основе типа файла я решил создать простую функцию в моем файле .vimrc. Я использую Vundle в качестве диспетчера плагинов и, как требуется Vundle, файл должен быть отключен. Я решил сохранить filetype в переменной и использовать его впоследствии в списке плагинов внутри Vundle. Вот соответствующий .vimrc раздел:Назначить параметр переменной .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 

Я не подвожу никакого вывода в строке «эхо вар», где я ожидал бы Filetype появиться. Тогда, конечно, выражение if принимает значение false, а else используется независимо от того, какой фактический тип файла я открываю.

Но когда я пытаюсь дать те же команды в VIM оболочки, как это:

:let var = &ft 
:echo var 

Я получаю фактический тип файла присваивается переменной вар.

Условный оператор также будет истинным, если я просто использовать пусть переменная = «питон» вместо пусть вар = & футов

Он смотрит на меня, что я не понимаю, правила присвоения значений параметров переменные.

Но я просто не знаю, что здесь не так.

Я очень ценю вашу помощь.

ответ

0

Команда в вашем vimrc выполняется только один раз, перед загрузкой любого буфера, так что нет никакого буфера и, следовательно, не &filetype к тому времени Vundle делает его questionnable «волшебный».


Но то, что вы делаете, глобально бессмысленно. Плагины, специфичные для типов файлов, обычно создаются таким образом, что большинство их специфичных для файла типов функций загружаются только только, когда загружается буфер с этим типом файла. Это полностью автоматический механизм, обрабатываемый функцией ftplugin.

Плагин, специфичный для файла, который полностью загружен при запуске, представляет собой плохо написанный плагин, который не заслуживает установки.

+0

Спасибо! Эти два плагина, которые я пытался включить на основе типа файла, кажутся взаимовыгодными - если они оба включены, они начинают вмешиваться друг в друга (по крайней мере, это то, что я обнаружил для кукольного типа файла), поэтому единственным решением является включение только по одному. Означает ли это, что единственным простым решением было бы редактировать .vimrc каждый раз, прежде чем я захочу редактировать python или другие файлы. –

 Смежные вопросы

  • Нет связанных вопросов^_^