【问题标题】:Best way to organize filetype settings in .vim and .vimrc?在 .vim 和 .vimrc 中组织文件类型设置的最佳方式?
【发布时间】:2011-02-22 19:16:54
【问题描述】:

我正在浏览我的 vim 点文件来整理它们。我注意到随着时间的推移,我以各种不一致的方式添加了各种文件类型特定的设置。假设我正在为 Python 进行自定义:

  • au BufRead,BufNewFile *.py (do something)。我不喜欢这样,因为某些 Python 文件可能没有 .py 终止符。

  • au FileType python (do something)。这似乎是一个更好的选择,因为它不依赖于具有 .py 终止的文件。缺点是 Vim 不知道某些文件类型。我可以让 Vim 识别其他文件类型,但我也有各种不一致的方法:.vim/filetype.vim 文件、.vim/after/filetype.vim 中的另一个和.vimrc 中的各种set filetype 命令。

  • 添加具有文件类型特定设置的.vim/ftplugin/python.vim 文件。我知道$VIMRUNTIME/ftplugin/python.vim 可以覆盖我在这里所做的任何设置。一个问题是我不确定这如何与.vim/filetype.vim.vim/after/filetype.vim 交互。

  • 添加.vim/after/ftplugin/python.vim。我知道这是在$VIMRUNTIME/ftplugin/python.vim 之后加载的,因此它可以从那里覆盖设置。与前面的方法一样,我不确定它如何与 filetype.vim 文件交互。

所以我至少有四种方法可以做到这一点,更不用说语法文件和特定于文件类型的插件了。在我看来,最好的方法是将我的文件类型特定设置放在after/ftplugin 中,这样它们就不会被覆盖,并且出于同样的原因,filetypes.vimafter 中。

但是,在我继续之前,我想问一下是否有人对处理文件类型特定设置的最佳方式有建议。

【问题讨论】:

    标签: file-type vim ftplugin


    【解决方案1】:

    我将我的 Python 特定设置存储在 $HOME/.vim/ftplugin/python.vim 中,因为我没有做任何与 $VIMRUNTIME/ftplugin/python.vim 冲突的事情。

    将这些设置保存在 ftplugin 文件中可以使 my .vimrc 保持美观、通用且易于维护(在使用 Vim 十多年后,它仍然相当大)。

    如果你想overrule ftplugins 设置你的 Vim 发行版,那么 $HOME/.vim/after/ftplugin/python.vim 就是你想要的,因为它是 after 这些。 p>

    同样,$HOME/.vim/filetype.vim 将在 $VIMRUNTIME/filetype.vim 之前获得,而这又将在 $HOME/.vim/after/filetype.vim 之前获得。

    调用:scriptnames 将列出所有来源的脚本名称,按照它们最初来源的顺序。

    :help filetype 提供了关于这一切的非常全面的信息。

    【讨论】:

    • 只是想在此处添加一个注释,并非所有设置都必须位于文件类型的单个文件中,它们可以位于以文件类型命名的目录中。我在 .vim/ftplugin/python/{pydoc.vim, python.vim, etc..} 中有我的 python 设置(和特定于 python 的插件)
    • +1:如果您对给定的文件类型有很多不同的设置,这是一种非常巧妙的组织方式。
    • 嗯,这很酷。最好不要把它调到 11,因为verbose = 10 信息太多了。
    • Randy 提到你可以使用 .vim/ftplugin/python/*,但你也可以让你的脚本以文件类型开头:.vim/ftplugin/python_*.vim 非常适合拆分你的 python 设置来自 python-vim 代码。
    • :help filename 为我返回:filename 命令的帮助。你的意思是:help filetype
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多