15

假设我将一个 .txt 文件加载到 Vim 中。然后我想改变,filetype=html但我也想加载一个关联的 ftplugin。我怎样才能做到这一点?

我已经尝试过类似的东西::set filetype plugin onand :set filtype plugin_nameon and also :filetype plugin_nameon etc.,但我似乎无法手动加载 ftplugin。有什么建议么?

我已经尝试过:filetype=html,然后:filetype plugin on和其他组合无济于事。

编辑:我无法用任何答案“完全”解决这个问题(但它可能与我的配置有关)。但是,皮埃尔的回答非常好,所以我给他打了绿色的复选标记。

4

5 回答 5

10

我相当确定,当您使用它切换文件类型时,:set ft=X它会自动在您的 .vim/ftplugin 文件夹中加载关联的插件。例如:set ft=html将加载 .vim/ftplugin/html.vim ,您将在其中加载任何关联的插件。但是BufEnterBufNew与 html 文件关联的插件加载不会被加载,因为设置新的文件类型不会触发这些事件。因此,如果您的 .vimrc 中有 html 特定插件已加载,BufNew或者BufEnter您可能希望将它们放在 .vim/ftpluging/html.vim 文件中。

您始终可以在更改文件类型的文本文件中添加模式行。例如<!-- vim: ft=html -->

于 2009-12-28T19:40:20.723 回答
3
:filetype on
:set filetype=html
于 2009-12-28T19:24:14.473 回答
3

只是遇到了同样的情况,即使我打开了一个 Perl 文件,也没有加载 ftplugins。原来我的 Vim 副本(来自)并Git for Windows没有附带ftplugin.vimftplugof.vim

以下是我实现这一认识的方式:

  1. :filetype

    • 检查文件类型插件是否确实打开。

  2. :scriptnames

    • 打印源脚本列表,发现没有脚本ftplugin\来自。
    • 当时我没有意识到,但我应该注意到我没有看到ftplugin.vim那里。

  3. 检查 Vim 目录 ( {git-path}/share/vim/vim{version}/) 是否有ftplugin.vimandftplugof.vim

    • 这些文件是在您执行时获取的:filetype plugin on,并且:filetype plugin off

为了解决这个问题,我从Vim 运行时文件中抓取了丢失的文件并复制到它应该去的地方。

于 2013-06-10T18:55:14.523 回答
1

当你改变文件类型时,Vim 会自动加载正确的插件

:set ft=python

你可以以详细模式启动 vim:

vim -V

这会告诉你 vim 正在执行什么。如果你打开一个文件并手动设置文件类型,vim 会显示它是否加载了正确的插件。

于 2010-02-20T11:32:54.210 回答
0
:f something.html
:w
:e
于 2009-12-28T19:20:12.853 回答