Debuggen matchit Plugin in Vim (unter Cygwin)
-
10-07-2019 - |
Frage
Die „matchit“ Plugin für Vim soll, damit Sie den %
Schlüssel verwenden, um zwischen passendem Start / End-Tags zu springen, wenn HTML-Bearbeitung, sowie /*
und */
Kommentarbegrenzer, wenn andere Arten von Code zu bearbeiten.
Ich habe die genaue Anweisungen in „:help matchit
“ gefolgt, aber %
noch für mich nicht funktioniert.
Es scheint dumm zu fragen: „Warum funktioniert das nicht?“ so stattdessen ich frage Wie kann ich das Problem diagnostizieren? Zeiger auf Referenzen sind willkommen, aber spezifische vim-plugin-Debugging-Techniken werden bevorzugt.
Hier ist das ~ / .vim Verzeichnis:
$ 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 .
Ich verwende Vim 7.2 unter Cygwin (installiert Herbst 2008). cygcheck
zeigt:
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
In vim, :set
zeigt:
--- 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
Vor allem die Syntax und Dateityp werden sowohl als HTML erkannt. (Die Syntaxfärbung ist gut so.)
Wenn zusätzliche Informationen benötigt wird, bitte kommentieren.
UPDATE:
Per Antwort von zu viel php :
Nach vim -V1
versucht, hatte ich meinen .vimrc
geändert, um eine Linie schließen
set nocp
so die compatible
Option ist nicht auf.
:let loadad_matchit
loaded_matchit #1
:set runtimepath?
runtimepath=~/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim72,/usr/share/vim/vimfiles/after,~/.vim/after
(~
ist /cygdrive/y
)
Per Antwort von michael :
:scriptnames
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
Beachten Sie, dass matchit.vim, html.vim, tohtml.vim, css.vim und javascript.vim sind alle vorhanden.
:echo b:match_words
E121: Undefined variable: b:match_words
E15: Invalid expression: b:match_words
Hm, das sieht sehr relevant. Ich bin jetzt durch :help matchit-debug
suchen, um herauszufinden, wie b:match_words
zu beheben.
Lösung
Dank diesem Posting von der vim_use Mailing-Liste, fand ich eine Folge von Befehlen, die funktionieren:
vim -u NONE somefile.html
(dies startet vim ohne .vimrc Lesung)
Dann
:set nocp
:source /usr/share/vim/vim72/macros/matchit.vim
:filetype plugin on
:filetype detect
:syntax on
Es ist nicht ideal, aber es scheint nicht von .vimrc zu arbeiten. Und es funktioniert nicht, wenn syntax on
die Datei des Typs Erkennung vorausgeht, so dass ich vermute, es ist ein Konflikt in der Interaktion zwischen der Syntax-Hervorhebung Sachen und Sachen entsprechen.
Andere Tipps
Verwenden Sie den folgenden Befehl ein, um zu sehen, ob das Plugin geladen wurde:
:let loaded_matchit
Wenn Sie einen undefinierten Variable Fehler bekommen, dann ist das Plugin nicht geladen wurde - Sie sollten sicherstellen, dass '/cygdrive/y/.vim' ist in dem 'runtimepath' Option (use ':set runtimepath?
')
Beachten Sie auch, dass die matchit Plugin nicht geladen, wenn die Option ‚compatible‘ eingeschaltet ist.
Sie möchten vielleicht durch :he matchit
lesen. Der Abschnitt über die Konfiguration könnte helfen.
:he matchit-debug
- Debugging-Informationen spezifisch für matchit
:he debug
- allgemeine vim Debugging (Sie alle Arten von Breakpoint tun können / Schritt durch Sachen)
Eine gemeinsame Gotcha (nicht Ihr Fall aber) ist die HTML-Datei des Typs geklaut werden kann, wenn Sie eine Vorlage Plugin verwenden. (Z. B. meine html in html.djangotemplate gedreht) Versuchen :set ft?
Ihren Dateityp zu finden. Sie könnten b:match_words
in die ftplugin für die Vorlage Dateityp.
:echo b:match_words
- sollte eine Liste von HTML suchen regex die geben
auch bei der offensichtlichen :scriptnames
sollte irgendwo zeigen matchit.vim
Good Luck
Ich habe keine Ahnung über vim (außer es viel verwendet wird), aber ich fand, dass die followng zwei Zeilen in meinem .vimrc setzen viel geholfen:
:source /usr/share/vim/addons/plugin/matchit.vim
:source /usr/share/vim/vim72/ftplugin/html.vim
Ich bin sicher, dass es eine richtige Art und Weise ist, aber zumindest das funktionierte für mich.
Cheers,
Joerg
Ich habe über die Befehle in meinem .vimrc zu arbeiten, indem die meisten der anderen Mist in ~ / vim, wie ~ / .vim / ftdetect und ~ / .vim / ftplugin. Beginnen Sie mit einem sauberen ~ / .vim und nur Kopieren Sie in dem, was Sie ist spezifisch, vermeidet alles, was könnte hat eine neuere Version in $ VIMRUNTIME, und es sollte funktionieren.