Vim 加载插件但找不到命令
Vim load plugins but can't find command
我正在尝试使用此插件编写 markdown http://www.vim.org/scripts/script.php?script_id=3994, https://github.com/suan/vim-instant-markdown。
我的Vim情况:
- 之前安装的 vim-markdown 用于编辑 *.md 文件。
- 使用病原体来管理包。
- 我只是把 instanct-markdown.vim 放到 ~/.vim/plugin 文件夹中。
这里有一些奇怪的事情:
- 当我输入 vim 或 MacVim 而没有打开 *.md 文件时,命令 :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 并且有效。
一些小问题是:
- 我不知道后面/是什么意思?
- 我也搜索 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所说,我仔细比较了语法高亮with/without插件,看来我真的错过了vim插件,但如果我只是将脚本复制到~/.vim/after/ftplugin/markdown, 当我打开 *.md 文件时缺少命令。
我发现如果我将 *.md 更改为 *.markdown 文件,命令就会出现,所以真正的问题似乎是 vim 无法将 *.md 文件识别为 markdown 文件。所以我将所有即时降价更改为降价,将我的文件夹放入 ~/.vim/bundle,然后我得到了 vim 默认降价突出显示,我做对了吗?本?
您安装的插件不正确。在您的辩护中,脚本页面在撰写本文时已过时,但 github 页面已更新。这个插件现在被设计成一个文件类型插件。每次打开 Markdown 文件时,它都应该加载,为该文件定义一个命令 本地到缓冲区 。当你编辑一个新文件时,你会得到一个新的缓冲区。这样命令只为降价文件定义。
但是您将其安装为常规(非文件类型特定)插件。因此,它只在空的启动缓冲区上加载一次。当您加载一个新文件时,该启动缓冲区及其拥有的命令会消失。
而不是 plugin 目录,您将 ftplugin 文件放在 ftplugin 或 after/ftplugin。该文件的名称应与其触发的文件类型相同,或者应放置在以文件类型命名的目录中。在这种情况下,github 上的安装说明说:
Copy the after/ftplugin/markdown/instant-markdown.vim file from this
repo into your ~/.vim/after/ftplugin/markdown/ (creating directories
as necessary), or follow your vim package manager's instructions.
编辑问题的新部分:
请注意插件如何建议安装在 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",您的脚本将 运行,但正常脚本的 none 将 运行。例如,您不会得到任何语法高亮显示。
当 运行ning 文件类型插件时,Vim 将 运行 与文件类型同名的任何内容(例如 "markdown.vim"),它将 运行以文件类型为前缀的任何内容(例如 "markdown_preview.vim"),它将 运行 以文件类型命名的目录中的任何内容(例如 "markdown/instant-markdown.vim")。
我也遇到了类似的问题。我的问题是这样的:打开名为 README.md
的降价文件被发现支持此功能,其他文件 *.md
将响应我的错误,如:Not an Editor Command InstantMarkdownPreview
。我不知道出了什么问题。
我目前的测试平台是我的MacOSX 10.9
.
但幸运的是,我找到了解决这个问题的方法,你看,对于这个插件,我们可以从 http://www.vim.org/scripts/script.php?script_id=3994 and from https://github.com/suan/vim-instant-markdown 中找到它。但是这两个站点的安装说明并不相同。
- 对于https://github.com/suan/vim-instant-markdown,它表示复制到
~/.vim/after/ftplugin/markdown/
。
- 对于http://www.vim.org/scripts/script.php?script_id=3994,它表示复制到
Download the script into ~/.vim/plugin
,这是安装Vim插件的一种非常常见的方法。
我从上一个站点下载了插件并将其复制到 ~/.vim/plugin
中,一切都开始工作了。
希望对您有所帮助:-)
我正在尝试使用此插件编写 markdown http://www.vim.org/scripts/script.php?script_id=3994, https://github.com/suan/vim-instant-markdown。
我的Vim情况:
- 之前安装的 vim-markdown 用于编辑 *.md 文件。
- 使用病原体来管理包。
- 我只是把 instanct-markdown.vim 放到 ~/.vim/plugin 文件夹中。
这里有一些奇怪的事情:
- 当我输入 vim 或 MacVim 而没有打开 *.md 文件时,命令 :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 并且有效。
一些小问题是:
- 我不知道后面/是什么意思?
- 我也搜索 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所说,我仔细比较了语法高亮with/without插件,看来我真的错过了vim插件,但如果我只是将脚本复制到~/.vim/after/ftplugin/markdown, 当我打开 *.md 文件时缺少命令。
我发现如果我将 *.md 更改为 *.markdown 文件,命令就会出现,所以真正的问题似乎是 vim 无法将 *.md 文件识别为 markdown 文件。所以我将所有即时降价更改为降价,将我的文件夹放入 ~/.vim/bundle,然后我得到了 vim 默认降价突出显示,我做对了吗?本?
您安装的插件不正确。在您的辩护中,脚本页面在撰写本文时已过时,但 github 页面已更新。这个插件现在被设计成一个文件类型插件。每次打开 Markdown 文件时,它都应该加载,为该文件定义一个命令 本地到缓冲区 。当你编辑一个新文件时,你会得到一个新的缓冲区。这样命令只为降价文件定义。
但是您将其安装为常规(非文件类型特定)插件。因此,它只在空的启动缓冲区上加载一次。当您加载一个新文件时,该启动缓冲区及其拥有的命令会消失。
而不是 plugin 目录,您将 ftplugin 文件放在 ftplugin 或 after/ftplugin。该文件的名称应与其触发的文件类型相同,或者应放置在以文件类型命名的目录中。在这种情况下,github 上的安装说明说:
Copy the after/ftplugin/markdown/instant-markdown.vim file from this repo into your ~/.vim/after/ftplugin/markdown/ (creating directories as necessary), or follow your vim package manager's instructions.
编辑问题的新部分:
请注意插件如何建议安装在 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",您的脚本将 运行,但正常脚本的 none 将 运行。例如,您不会得到任何语法高亮显示。
当 运行ning 文件类型插件时,Vim 将 运行 与文件类型同名的任何内容(例如 "markdown.vim"),它将 运行以文件类型为前缀的任何内容(例如 "markdown_preview.vim"),它将 运行 以文件类型命名的目录中的任何内容(例如 "markdown/instant-markdown.vim")。
我也遇到了类似的问题。我的问题是这样的:打开名为 README.md
的降价文件被发现支持此功能,其他文件 *.md
将响应我的错误,如:Not an Editor Command InstantMarkdownPreview
。我不知道出了什么问题。
我目前的测试平台是我的MacOSX 10.9
.
但幸运的是,我找到了解决这个问题的方法,你看,对于这个插件,我们可以从 http://www.vim.org/scripts/script.php?script_id=3994 and from https://github.com/suan/vim-instant-markdown 中找到它。但是这两个站点的安装说明并不相同。
- 对于https://github.com/suan/vim-instant-markdown,它表示复制到
~/.vim/after/ftplugin/markdown/
。 - 对于http://www.vim.org/scripts/script.php?script_id=3994,它表示复制到
Download the script into ~/.vim/plugin
,这是安装Vim插件的一种非常常见的方法。
我从上一个站点下载了插件并将其复制到 ~/.vim/plugin
中,一切都开始工作了。
希望对您有所帮助:-)