Plugins 如何在Vim中启动后手动加载ftplugin?

Plugins 如何在Vim中启动后手动加载ftplugin?,plugins,vim,ftplugin,Plugins,Vim,Ftplugin,假设我将一个.txt文件加载到Vim中。然后我想更改filetype=html,但我还想加载一个相关的ftplugin。我该怎么做 我试过这样的方法::打开和:打开filtype plugin\u name和:打开文件类型plugin\u name等等,但我似乎无法手动加载ftplugin。有什么建议吗 我尝试了:filetype=html和:filetype-plugin-on以及其他组合,但都没有成功 编辑:我不能用任何答案“完全”解决这个问题(但这可能是我的个人配置)。然而,皮埃尔的回答非

假设我将一个.txt文件加载到Vim中。然后我想更改
filetype=html
,但我还想加载一个相关的ftplugin。我该怎么做

我试过这样的方法:
:打开
:打开filtype plugin\u name
:打开文件类型plugin\u name
等等,但我似乎无法手动加载ftplugin。有什么建议吗

我尝试了
:filetype=html
:filetype-plugin-on
以及其他组合,但都没有成功


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

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

:f something.html
:w
:e

您可以始终向文本文件添加一个更改文件类型的modeline。例如,当您更改文件类型时,Vim会自动加载正确的插件

:set ft=python
您可以在详细模式下启动vim:

vim -V

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

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

以下是我如何实现这一目标的:

  • :文件类型

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

  • :脚本名

    • 打印源脚本列表,发现
      ftplugin\
      中没有源脚本
    • 当时我没有意识到这一点,但我应该注意到我没有在那里看到
      ftplugin.vim


  • 检查Vim目录(
    {git path}/share/Vim/Vim{version}/
    )是否具有
    ftplugin.Vim
    ftplugof.Vim

    • 当您执行
      :filetype plugin on
      :filetype plugin off

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

    对于snipMate插件,我特别遇到了这个问题,它的一个脚本位于~/.vim/ftplugin/-我使用的是全文本firefox插件,它以.txt文件的形式打开网页。我必须这样做,因为我正在使用CMS。无法加载的确切文件是:~/.vim/ftplugin/html\u snip\u helper.vim(snipMate使用它来关闭html标记,例如键入r并点击TAB创建
    ),ftplugin文件夹中的脚本必须具有文件类型的名称,例如python.vim、ruby.vim、html.vim。这些在filetype.vim中定义。我猜html_snip_header.vim是由snipMate插件加载的,该插件加载在插件目录中,对吗?在ftplugin下添加一个html.vim文件,该文件直接加载html\u snip\u header.vim,它应该具有相同的效果。您可以随时向文本文件添加一个modeline,以更改状态,例如
    。感谢您提供的提示!当我开始工作的时候,我会努力的;)对不起,是的,我试过了,但没用。我认为皮埃尔在他的帖子下面的评论中有一个观点;我将尝试放置一个html.vim来获取另一个ftplugin的源代码。我已经安装了snipMate。下面是我的一系列命令:vi a.txt:f a.cpp:w:e然后我输入for并按,它将插入for循环,如文档所示。也许你会再试一次?当您这样做时:e vim执行的操作顺序与以“vi”打开文件时完全相同,这涉及加载所有必要的插件。snipMate本身也可以工作(很抱歉有这么大的误解),但特别是对于.html文件,它调用位于~/.vim/ftplugin中的一个小帮助脚本…这就是我遇到的问题。这个特定的脚本除了关闭任何本质上是单一的html标记外,什么都不添加,例如
    。文件类型有三个设置:检测、插件加载和缩进filetype on将仅设置检测,请尝试“:filetype plugin on”或“:filetype plugin indent on”。
    vim -V