为什么vim不识别新的文件类型?

时间:2014-07-08 20:21:08

标签: vim file-type

我正在尝试让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?

1 个答案:

答案 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