在vim中根据文件扩展名更改文件类型

时间:2012-10-07 07:42:17

标签: vim vim-syntax-highlighting

我想根据vim中的文件扩展名更改文件类型。

我的.vimrc

中有以下代码
autocmd BufNew,BufNewFile,BufRead *.txt,*.text,*.md,*.markdown setlocal ft=markdown

但是当我使用扩展名.md文件打开文件时,文件类型不会更改。我运行:set ft命令,它将输出显示为filetype=modula2

我做错了吗?

编辑:

我开始通过重命名旧.vimrc文件进行调试,并使用此行创建了一个新文件。它运作正常。然后我替换了我的旧.vimrc文件,一切似乎都运行正常。猜猜是因为我正在使用的一些插件中存在一些问题。

但接受ZyX的答案,因为它认为我是另一种方法。

3 个答案:

答案 0 :(得分:6)

我使用此行创建了一个~/vim/ftdetect/markdown.vim文件

autocmd BufNewFile,BufRead *.md,*.mkdn,*.markdown :set filetype=markdown

读取文件类型的文档,setfiletype仅设置是否取消设置文件类型。因此,您需要使用set无条件更改文件类型。

答案 1 :(得分:1)

想知道这条线是在filetype … on之前还是之后。在前一种情况下,您应该尝试在此行之后放置它(您的自动命令)。如果您将其放入~/.vim/ftdetect/markdown.vim并使用setfiletype markdown代替setlocal ft=markdown,则会更好:

augroup filetypedetect
    autocmd BufNew,BufNewFile,BufRead *.txt,*.text,*.md,*.markdown :setfiletype markdown
augroup END

:这是做这些事情的默认方式。在这种情况下,~/.vim选项中的/usr/share/vim/*路径前必须'runtimepath'(默认情况下会这样)。

答案 2 :(得分:1)

通过在Vim \ vim74 \ syntax目录中创建目标语法文件的重命名副本,我能够获得备用文件扩展名的语法高亮显示。

要将* .md打开为.markdown:

copy markdown.vim md.vim

或将markdown.vim的副本粘贴到语法文件夹,然后重命名副本md.vim。

(在win7上运行vim74)