【问题标题】:Vim load plugins but can't find commandVim 加载插件但找不到命令
【发布时间】:2015-01-19 10:20:09
【问题描述】:

我正在尝试使用这个插件来编写 markdown http://www.vim.org/scripts/script.php?script_id=3994https://github.com/suan/vim-instant-markdown

我的 Vim 情况:

  • 以前安装 vim-markdown 来编辑 *.md 文件。
  • 使用病原体来管理包裹。
  • 我只是将 instanct-markdown.vim 放到 ~/.vim/plugin 文件夹中。

这里有一些奇怪的事情:

  • 当我在没有打开 *.md 文件的情况下进入 vim 或 MacVim 时,命令 :InstantMarkdownPreview 存在。但是当我打开 *.md 文件时,找不到这个命令。
  • 我看到了 :scriptnames 输出,脚本已经加载。

我不知道为什么?有人可以帮忙吗?


1 月 21 日更新。

我通过将 vim-markdown 的 ftdetect 复制到我的 ftdetect 文件夹并进行小改动解决了这个问题

au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}   set filetype=mkd
au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx} set filetype=mkd  

小改动只是将 mkd 更改为 Instant-markdown,将此文件类型文件保存到 ~/.vim/ftdetect/instant-markdown.vim 并将脚本 instant-markdown.vim 复制到 ~/.vim/after /ftplugin/instant-markdown/instant-markdown.vim 就可以了。

一些小问题是:

  • 我不知道 after/ 是什么意思?
  • 我还搜索了 vim 编写插件指南,几乎一无所获。可能是错误的关键字?

1 月 23 日更新

我明白之后意味着加载缓慢。这是我目前的解决方案,我将它包裹在病原体包中,看起来还可以,有什么问题吗?

mac 01-23 16:13:38 instant-markdown $ pwd
/Users/xxx/.vim/bundle/instant-markdown 
mac 01-23 16:07:40
instant-markdown $ tree ./
./
├── ftdetect
│   └── instant-markdown.vim
└── ftplugin
    └── instant-markdown.vim
2 directories, 2 files 
mac 01-23 16:07:42 instant-markdown $ cat ftdetect/instant-markdown.vim 
" markdown filetype file
au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn} set    filetype=instant-markdown
au BufRead,BufNewFile *.{md,mdown,mkd,mkdn,markdown,mdwn}.{des3,des,bf,bfa,aes,idea,cast,rc2,rc4,rc5,desx} set filetype=instant-markdown

1 月 26 日更新

正如本所说,我仔细比较了有/没有插件的语法高亮,似乎我真的错过了 vim 插件,但如果我只是将脚本复制到 ~/.vim/after/ftplugin/markdown 中,当我打开一个*.md 文件缺少命令。

我发现如果我将 *.md 更改为 *.markdown 文件,命令就会出现,所以真正的问题似乎是 vim 无法将 *.md 文件识别为 markdown 文件。所以我将所有即时降价更改为降价,将我的文件夹放入 ~/.vim/bundle,我得到了 vim 默认降价高亮,我做对了吗?本?

【问题讨论】:

  • 随着问题的不断演变和意义的变化,我已停止更新我的答案。你应该把它移到 Vim 的邮件列表中,因为它已经变成了一个 讨论 而不是问答。我认为我的回答仍应为您提供足够的信息以使其正常工作,但如果您仍然感到困惑,可能是时候去mailing list for Vim了。
  • 我已经掌握了所有我需要知道的东西,感谢您一直以来的帮助。

标签: vim plugins markdown


【解决方案1】:

您错误地安装了插件。在您的辩护中,脚本页面在撰写本文时已过时,但 github 页面已更新。这个插件现在被设计为一个文件类型插件。它应该在您每次打开 markdown 文件时加载,为该文件定义一个 本地到缓冲区 的命令。当你编辑一个新文件时,你会得到一个新的缓冲区。这样该命令只为markdown文件定义。

但是您将它安装为常规(不是特定于文件类型)插件。因此,它只在空的启动缓冲区上加载一次。当您加载一个新文件时,该启动缓冲区以及它所拥有的命令会消失。

您将 ftplugin 文件放在 ftpluginafter/ftplugin 中,而不是 plugin 目录。该文件的名称应与其触发的文件类型相同,或者应放置在以该文件类型命名的目录中。在这种情况下,github上的安装说明说:

从这里复制 after/ftplugin/markdown/instant-markdown.vim 文件 回购到你的 ~/.vim/after/ftplugin/markdown/ (创建目录 必要时),或按照您的 vim 包管理器的说明进行操作。


编辑问题的新部分:

注意插件建议如何安装在 after/ftplugin/markdown 目录中。 Vim 中的 "after" 目录用于提供对相同类型的其他插件的添加或覆盖。顾名思义,“after”目录中的脚本在通常位置的脚本之后运行。因此,如果您有两个“markdown”脚本,一个在 ~/.vim/ftplugin/markdown/script1.vim 中,一个在 ~/.vim/after/ftplugin/markdown/script2 中。 vim: script1.vim 会先运行,然后 script2.vim 会运行。因此,script2.vim 可以使用 script1.vim 中定义的内容,或覆盖 script1.vim 中的设置等。

语法文件、ftplugin 文件、普通插件文件、缩进文件;所有这些都可以以这种方式定义覆盖。

还要注意在 ftplugin 目录中创建的 markdown 目录。这是为了允许任意文件名,在本例中为“instant-markdown”,即使它与文件类型的名称不匹配。我想你想保留这个好处;如果您将文件类型设置为“instant-markdown”,您的脚本将运行,但不会运行任何普通脚本。例如,您将不会获得语法高亮显示。

当运行文件类型插件时,Vim 将运行与文件类型同名的任何东西(例如“markdown.vim”),它将运行任何以文件类型为前缀的东西(例如“markdown_preview.vim”),它会在以文件类型命名的目录中运行任何东西(例如“markdown/instant-markdown.vim”)。

【讨论】:

  • 我试过这个,但它不起作用。我尝试过: 1. 放入 .vim/ftplugin .vim/after/plugin -> 即使在正常模式下也看不到命令​​,脚本没有加载到 :scriptnames 2."wrap" 就像一个病原体插件,把在 .vim/bundle 中,还是不行。
  • 我也尝试在vim-markdown中复制一些文件,如ftdetect/文件夹,仍然无法工作,我不知道after/ ftdetect/是什么意思,也看不到任何文件类型在 Instant-markdown.vim 文件中声明。
  • 您是否在 .vimrc 中打开了文件类型检测,或者手动设置文件类型?您的插件中不会有任何文件类型声明。该插件没有设置文件类型,它依赖于已经设置的文件类型。所以你还需要编辑一个markdown文件。插件站点上的说明似乎已过时,但 github 上的安装说明应该可以工作。我会更新答案,它们有点不标准。
  • 我查看了 ftdetect 文件并发现了一些问题,现在它可以工作了。好的,谢谢你的帮助。我已经更新了问题
  • 我不认为将文件类型设置为“instant-markdown”是有用的。您是否阅读了我关于在 ftplugin 目录中创建“markdown”文件夹的更新答案?
【解决方案2】:

我也遇到了类似的问题。我的问题是这样的:找到名称为README.md 的打开markdown 文件支持此功能,而其他文件*.md 将响应我的错误,例如:Not an Editor Command InstantMarkdownPreview。我不知道出了什么问题。

我目前的测试平台是我的MacOSX 10.9

但幸运的是,我找到了解决这个问题的方法,你看,对于这个插件,我们可以从 http://www.vim.org/scripts/script.php?script_id=3994https://github.com/suan/vim-instant-markdown 找到它。但是这两个站点的安装说明并不相同。

我从上一个站点下载了插件并将其复制到~/.vim/plugin,一切都开始工作了。

希望对你有帮助:-)

【讨论】:

  • 感谢您的回答,问题已经解决,我学到了很多:D
猜你喜欢
  • 2014-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
  • 2013-02-06
相关资源
最近更新 更多