我正在尝试让vim识别包含以下内容的filetype.vim文件:
if exists("did_load_filetypes")
finish
endif
augroup autodetect
au! BufRead,BufNewFile *.ish setfiletype perl
augroup END
此文件位于〜/ programs / vim
目录中我的.vimrc文件包含以下行:
set runtimepath=~/programs/vim,$VIMRUNTIME
我通过输入":set runtimepath?"检查了这一行是否正在执行结果是" runtimepath =〜/ programs / vim,/ usr / share / vim / vim74"。
但是当我打开诸如ish.ish之类的文件时,vim filetype变量被设置为' on'。当我打开x.pl时,vim filetype变量设置为' perl'。
我可以通过将filetype.vim复制(或移动)到〜/ .vim目录(不更改runtimepath)来解决问题。为什么vim不识别〜/ programs / vim中的filetype.vim?
答案 0 :(得分:4)
'runtimepath'
选项旨在告诉Vim在哪里寻找"标准" *.vim
文件,例如colorschemes和plugins。在干净的Vim会话中尝试:echo &rtp
以查看其外观并阅读:help 'runtimepath'
。通过将此选项设置为无意义的值,您可以有效地使Vim无法找到这些文件,从而正常工作。
要将特定目录添加到'runtimepath'
,请使用以下语法:
set runtimepath+=/path/to/directory
但是,您希望将非标准目录用于标准脚本的原因是什么? ~/.vim
有什么问题?
告诉Vim有关新文件类型的最明显的方法是将这些行添加到~/.vimrc
:
augroup autodetect
autocmd!
autocmd BufRead,BufNewFile *.ish set filetype=perl
augroup END
最干净的方式是将此行放在~/.vim/ftdetect/ish.vim
中:
autocmd BufRead,BufNewFile *.ish set filetype=perl