我正在尝试一种基于新打开文件的文件类型来获取文件的简单方法。例如,我想在新文件是* .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
一切都按要求运作。
我错过了什么?
答案 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中,它会做你想要的。