Vim加载插件但无法找到命令

时间:2015-01-19 10:20:09

标签: vim plugins markdown

我正在尝试使用此插件来写下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改为即时降价,将此文件类型文件保存到〜/ .vim / ftdetect / instant-markdown.vim&将脚本instant-markdown.vim复制到〜/ .vim / after / ftplugin / instant-markdown / instant-markdown.vim并且它可以工作。

一些小问题是:

  • 我不知道之后是什么意思?
  • 我还搜索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日更新

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

  

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


修改问题的新部分:

请注意插件如何在 after / ftplugin / markdown 目录中安装。 ""之后" Vim中的目录用于在相同类型的其他插件上提供添加或覆盖。如其名称所示,"之后的脚本"目录在通常位置的脚本之后运行。所以,如果你有两个" 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 目录。这是为了允许任意文件名,在这种情况下"即时降价"即使它与文件类型的名称不匹配也要被采购。我想你想保持这个好处;如果你将文件类型设置为"即时降价"您的脚本将运行,但不会运行任何正常的脚本。例如,您将不会突出显示语法。

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

答案 1 :(得分:0)

我也遇到了类似的问题。我的问题是这样的:找到名为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,一切都开始有效。

希望它有所帮助: - )