【问题标题】:Changing filetype based on file extention in vim根据 vim 中的文件扩展名更改文件类型
【发布时间】:2012-09-27 20:03:50
【问题描述】:

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

我的.vimrc中有以下代码

autocmd BufNew,BufNewFile,BufRead *.txt,*.text,*.md,*.markdown setlocal ft=markdown

但是当我打开一个扩展名为.md 的文件时,文件类型并没有改变。我运行:set ft 命令,它显示输出为filetype=modula2

我做错了什么吗?

编辑:

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

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

【问题讨论】:

  • 对我来说看起来不错。您确定您的 vimrc 或插件中没有冲突的行吗?
  • 我很确定我的 vimrc 中没有冲突的行。但是有没有确定的方法来确定是否存在冲突?
  • 最简单的方法是使用一个新的 vimrc,其中只有这一行(当然是备份你现有的 vimrc)。然后看看你是否可以重现该行为。
  • 这很可能是因为我的第一个假设:在只有那一行的新 vimrc 中没有 filetype … on 命令。如果是插件问题,那么仅替换 vimrc 应该不起作用(除非您使用 VAM 或 Vundle,它们都具有通常在 vimrc 中定义的使用插件列表)。
  • 这绝对不是第一个选项,因为我已经明确设置了文件类型。我使用 Vundle 进行插件管理。当我有空闲时间时,我会更多地调试它。但它现在工作正常。

标签: vim vim-syntax-highlighting


【解决方案1】:

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

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

阅读文件类型的文档,setfiletype 仅在未设置文件类型时设置。因此,您需要使用set 来无条件更改文件类型。

【讨论】:

    【解决方案2】:

    想知道这一行是在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 必须在 'runtimepath' 选项中的 /usr/share/vim/* 路径之前(默认情况下)。

    【讨论】:

      【解决方案3】:

      通过在 Vim\vim74\syntax 目录中创建目标语法文件的重命名副本,我能够获得替代文件​​扩展名的语法突出显示。

      要使 *.md 作为 .markdown 打开:

      复制 markdown.vim md.vim

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

      (在win7上运行vim74)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        • 2013-05-20
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        相关资源
        最近更新 更多