如何在.vimrc中获取文件

时间:2010-12-19 02:11:10

标签: vim

我正在尝试一种基于新打开文件的文件类型来获取文件的简单方法。例如,我想在新文件是* .py时获取python.vimrc。这段代码(在.vimrc中)

function LoadFileTypeDefaults()
  let vimrcfile = &filetype . '.vimrc' 
  if filereadable(vimrcfile)
    echo vimrcfile
    source vimrcfile
  endif
endfunction
当我执行vi new.py

时,

会出现以下错误

  

python.vimrc

     

处理函数LoadFileTypeDefault时检测到错误:

     

第4行:

     

E484:无法打开文件vimrcfile

我的python.vimrc在我的runpath中。而且,如果我更换

source vimrcfile

source python.vimrc 

一切都按要求运作。

我错过了什么?

3 个答案:

答案 0 :(得分:4)

source命令需要文件名,而不是表达式。你给它vimrcfile所以它正在寻找名为vimrcfile的文件。使用execute将来自一个或多个表达式的命令串起来。

exe 'source' vimrcfile

(如果传递多个参数,它们将在执行前与空格连接。)


你真正想要的只是添加

autocmd Filetype python set expandtab " etc

.vimrc


或者如果你真的有很多设置,请将它们放在~/.vim/after/ftplugin/python.vim

答案 1 :(得分:2)

不应该是execute "source " . vimrcfile吗?

答案 2 :(得分:1)

Vim有一个用于处理此类事物的系统,称为文件类型插件或ftplugins。

~/.vim(或操作系统的标准内容)中,转到ftplugins目录(如果不存在则创建)并在其下创建python目录。加载.vim文件时,将自动获取该目录下的任何.py文件。

请注意,您需要filetype plugin on

或者你可以使用自动命令执行此操作,虽然它有点麻烦:

autocmd BufNewFile,BufRead *.py source python.vimrc

将它放在普通的vimrc中,它会做你想要的。