【问题标题】:Turn on Vim plugins for some files, not others?为某些文件打开 Vim 插件,而不是其他文件?
【发布时间】:2013-12-03 07:35:34
【问题描述】:

我最近在我的 .vimrc 中添加了filetype plugin indent on,以便为 Clojure 代码(*.clj 文件)启用特殊的缩进和语法高亮。但是,它也会导致我的 LaTeX 文件 (*.tex) 缩进。这在我编辑时很烦人,甚至更烦人,因为插入的制表符混淆了我用来处理我的 LaTeX 文件的自定义程序。我知道我可以使用空格进行缩进,但我真的只想让“智能”LaTeX 缩进消失。实际上,我希望所有智能缩进都消失,除非我特别要求它。

如何在 Vim 中为 Clojure 代码正确自动格式化,但关闭所有对 LaTeX 文件的特殊处理(语法高亮除外)?

对不起,如果这个问题已经回答了;我还没有成功找到答案。

(不相关的编辑评论:有时 Vim “升级”让我想回到 Unix 'vi'。好​​吧,不是真的。)

【问题讨论】:

    标签: vim


    【解决方案1】:

    每个正确的文件类型插件脚本在其开头都有一个包含保护。如果您不想要 Latex 文件的任何文件类型选项(即 tex 的文件类型),请使用以下内容创建文件 ~/.vim/ftplugin/tex.vim

    :let b:did_ftplugin = 1
    

    这会导致来自$VIMRUNTIME 的默认 ftplugin 中止其执行。这同样适用于缩进:~/.vim/indent/tex.vimb:did_indent 是保护变量。

    另类

    另一方面,如果您只想撤消某些选项(例如:setlocal expandtab 以避免插入制表符),您可以将这些覆盖命令放入所谓的 after 目录:@ 987654328@.

    【讨论】:

    • 英戈,非常感谢。你为我节省了许多烦人的时刻。对于其他阅读本文的人,我想指出,仅仅更改 b:did_indent 的值,它出现在现有的 indent/tex.vim 文件中是不够的;但是,如果 let b:did_indent = 0 出现在该文件的开头,它就可以工作。您关于after 目录的提示也非常非常有用。
    猜你喜欢
    • 2016-05-11
    • 2013-01-26
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-20
    • 2011-12-30
    相关资源
    最近更新 更多