在vim中调试matchit插件(在Cygwin下)
-
10-07-2019 - |
题
<!>“; matchit <!>”; vim的插件应该允许您在编辑HTML时使用%
键在匹配的开始/结束标记之间跳转,以及在编辑其他类型的代码时使用/*
和*/
注释分隔符。
我已按照<!>“:help matchit
<!>”中的确切说明操作,但cygcheck
仍然不适用于我。
要求<!>引用似乎很愚蠢;为什么这不起作用?<!>所以相反,我问如何诊断问题?欢迎使用指针参考,但首选特定的vim-plugin-debugging技术。
这是〜/ .vim目录:
$ ls -ltaGR ~/.vim
/cygdrive/y/.vim:
total 0
drwxr-xr-x 1 spause 0 Sep 17 13:20 ..
drwxr-xr-x 1 spause 0 Sep 16 13:59 doc
drwxr-xr-x 1 spause 0 Sep 16 13:58 .
drwxr-xr-x 1 spause 0 Sep 16 13:58 plugin
/cygdrive/y/.vim/doc:
total 24
-rw-r--r-- 1 spause 1961 Sep 16 13:59 tags
drwxr-xr-x 1 spause 0 Sep 16 13:59 .
-rw-r--r-- 1 spause 19303 Sep 16 13:58 matchit.txt
drwxr-xr-x 1 spause 0 Sep 16 13:58 ..
/cygdrive/y/.vim/plugin:
total 32
drwxr-xr-x 1 spause 0 Sep 16 13:58 ..
-rw-r--r-- 1 spause 30714 Sep 16 13:58 matchit.vim
drwxr-xr-x 1 spause 0 Sep 16 13:58 .
我在Cygwin下运行vim 7.2(2008年秋季安装)。 :set
显示:
1829k 2008/06/12 C:\cygwin\bin\cygwin1.dll
Cygwin DLL version info:
DLL version: 1.5.25
DLL epoch: 19
DLL bad signal mask: 19005
DLL old termios: 5
DLL malloc env: 28
API major: 0
API minor: 156
Shared data: 4
DLL identifier: cygwin1
Mount registry: 2
Cygnus registry name: Cygnus Solutions
Cygwin registry name: Cygwin
Program options name: Program Options
Cygwin mount registry name: mounts v2
Cygdrive flags: cygdrive flags
Cygdrive prefix: cygdrive prefix
Cygdrive default prefix:
Build date: Thu Jun 12 19:34:46 CEST 2008
CVS tag: cr-0x5f1
Shared id: cygwin1S4
在vim中,vim -V1
显示:
--- Options ---
autoindent fileformat=dos shiftwidth=3
background=dark filetype=html syntax=html
cedit=^F scroll=24 tabstop=3
expandtab shelltemp textmode
viminfo='20,<50,s10,h
值得注意的是,语法和文件类型都被识别为HTML。 (语法着色很好。)
如果需要其他信息,请发表评论。
更新:
太多PHP 的回答:
尝试.vimrc
后,我更改了compatible
以包含一行
set nocp
因此:let loadad_matchit
选项未启用。
:set runtimepath?
loaded_matchit #1
~
runtimepath=~/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim72,/usr/share/vim/vimfiles/after,~/.vim/after
(/cygdrive/y
是:scriptnames
)
michael 的回答:
:echo b:match_words
1: /cygdrive/y/.vimrc
2: /usr/share/vim/vim72/syntax/syntax.vim
3: /usr/share/vim/vim72/syntax/synload.vim
4: /usr/share/vim/vim72/syntax/syncolor.vim
5: /usr/share/vim/vim72/filetype.vim
6: /usr/share/vim/vim72/colors/evening.vim
7: /cygdrive/y/.vim/plugin/matchit.vim
8: /cygdrive/y/.vim/plugin/python_match.vim
9: /usr/share/vim/vim72/plugin/getscriptPlugin.vim
10: /usr/share/vim/vim72/plugin/gzip.vim
11: /usr/share/vim/vim72/plugin/matchparen.vim
12: /usr/share/vim/vim72/plugin/netrwPlugin.vim
13: /usr/share/vim/vim72/plugin/rrhelper.vim
14: /usr/share/vim/vim72/plugin/spellfile.vim
15: /usr/share/vim/vim72/plugin/tarPlugin.vim
16: /usr/share/vim/vim72/plugin/tohtml.vim
17: /usr/share/vim/vim72/plugin/vimballPlugin.vim
18: /usr/share/vim/vim72/plugin/zipPlugin.vim
19: /usr/share/vim/vim72/syntax/html.vim
20: /usr/share/vim/vim72/syntax/javascript.vim
21: /usr/share/vim/vim72/syntax/vb.vim
22: /usr/share/vim/vim72/syntax/css.vim
请注意,matchit.vim,html.vim,tohtml.vim,css.vim和javascript.vim都存在。
:help matchit-debug
E121: Undefined variable: b:match_words
E15: Invalid expression: b:match_words
嗯,这看起来非常相关。我现在正在通过b:match_words
查找如何修复<=>。 解决方案
感谢来自此帖子 =“http://groups.google.com/group/vim_use”rel =“nofollow noreferrer”> vim_use 邮件列表,我找到了一系列有效的命令:
vim -u NONE somefile.html
(这是在不读取.vimrc的情况下启动vim)
然后,
:set nocp
:source /usr/share/vim/vim72/macros/matchit.vim
:filetype plugin on
:filetype detect
:syntax on
这不是理想的,但它似乎不起作用.vimrc。当syntax on
在文件类型检测之前,它不起作用,所以我怀疑语法高亮显示内容和匹配内容之间的交互存在冲突。
其他提示
使用以下命令查看插件是否已加载:
:let loaded_matchit
如果你得到一个未定义的变量错误,那么插件没有加载 - 你应该确保'/cygdrive/y/.vim'在你的'runtimepath'选项中(使用':set runtimepath?
')
另请注意,如果启用“兼容”选项,则不会加载matchit插件。
您可能想要阅读:he matchit
。有关配置的部分可能有所帮助。
:he matchit-debug
- 特定于matchit的调试信息
:he debug
- 一般的vim调试(你可以做各种断点/单步执行)
一个常见的问题(不是你的情况)是如果你使用模板插件,可以删除html文件类型。 (例如,我的html变成了html.djangotemplate)尝试:set ft?
找到你的文件类型。您可能需要将b:match_words
复制到模板文件类型的ftplugin中。
:echo b:match_words
- 应该给出一个html看起来正则表达式的列表
如果显而易见:scriptnames
应该在某处显示matchit.vim
祝你好运
我对vim一无所知(除了使用它之外),但我发现在我的.vimrc中使用followng两行有很多帮助:
:source /usr/share/vim/addons/plugin/matchit.vim
:source /usr/share/vim/vim72/ftplugin/html.vim
我确信有一个正确的方法,但至少这对我有用。
干杯,
约尔格
我通过删除上面的命令在我的.vimrc中工作 〜/ vim中的大多数其他废话,例如〜/ .vim / ftdetect 和〜/ .vim / ftplugin。从干净的〜/ .vim开始 复制特定于你的东西,避免任何可能的东西 在$ VIMRUNTIME中有一个更新的版本,它应该可以工作。