为了根据文件类型在 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 shell 中像这样给出相同的命令时:
:let var = &ft
:echo var
我得到分配给 var 变量的实际文件类型。
如果我只使用 let var = "python" 而不是 let var = &ft,if 语句的计算结果也为 true
在我看来,我不了解将参数值分配给变量的规则。
但我只是不知道这里出了什么问题。
我非常感谢您的帮助。