将参数赋给.vimrc中的变量

时间:2016-01-17 20:52:37

标签: vim vim-plugin vundle

为了根据文件类型在vim中自动添加插件我决定在我的.vimrc文件中创建一个简单的函数。我使用Vundle作为插件管理器,并且根据Vundle的要求,应该关闭文件类型。我决定将filetype保存在变量中,然后在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" if语句的计算结果为true。而不是让var =& ft

在我看来,我并不了解将参数值赋值给变量的规则。

但我不知道这里有什么问题。

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

vimrc中的命令只在加载任何缓冲区之前执行,因此没有缓冲区,因此当时没有&filetype Vundle做出了疑问"魔术"。

但你所做的事情在全球范围内毫无意义。特定于文件类型的插件通常以这样的方式设计:当加载具有该文件类型的缓冲区时,其大多数文件类型特定的功能仅 加载。这是一种通过ftplugin功能处理的完全自动机制。

在启动时完全加载的特定于文件类型的插件是一个写得不好的插件,不值得安装。