Débogage du plugin matchit dans vim (sous Cygwin)
-
10-07-2019 - |
Question
Le " matchit " Le plug-in pour vim est censé vous permettre d'utiliser la touche %
pour basculer entre les balises de début / fin correspondantes lors de l'édition de HTML, ainsi que / *
et * /
les délimiteurs de commentaires lors de l'édition d'autres types de code.
J'ai suivi les instructions exactes dans ": help matchit
", mais %
ne fonctionne toujours pas pour moi.
Il semble ridicule de demander "Pourquoi cela ne fonctionne-t-il pas?" Je demande donc Comment puis-je diagnostiquer le problème? Les pointeurs sur les références sont les bienvenus, mais les techniques spécifiques de débogage du plug-in vim-plugin sont préférées.
Voici le répertoire ~ / .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 .
J'utilise vim 7.2 sous Cygwin (installé à l'automne 2008). cygcheck
indique:
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
Dans vim, : set
affiche:
--- 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
Notamment, la syntaxe et le type de fichier sont tous deux reconnus comme HTML. (La coloration de la syntaxe convient parfaitement.)
Si des informations supplémentaires sont nécessaires, veuillez commenter.
MISE À JOUR:
Par réponse, trop de php :
Après avoir essayé vim -V1
, j'avais modifié mon .vimrc
pour inclure une ligne
set nocp
pour que l'option compatible
ne soit pas activée.
: laissez loadad_matchit
loaded_matchit #1
: définir runtimepath?
runtimepath=~/.vim,/usr/share/vim/vimfiles,/usr/share/vim/vim72,/usr/share/vim/vimfiles/after,~/.vim/after
( ~
est / cygdrive / y
)
Par réponse, michael :
: noms de script
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
Notez que matchit.vim, html.vim, tohtml.vim, css.vim et javascript.vim sont tous présents.
: echo b: mots-clés
E121: Undefined variable: b:match_words
E15: Invalid expression: b:match_words
Hm, cela semble très pertinent. Je cherche maintenant dans : help matchit-debug
pour savoir comment corriger b: match_words
.
La solution
Merci à cette publication dans vim_use , j'ai trouvé une séquence de commandes qui fonctionne:
vim -u NONE somefile.html
(cela démarre vim sans lire .vimrc)
Ensuite,
:set nocp
:source /usr/share/vim/vim72/macros/matchit.vim
:filetype plugin on
:filetype detect
:syntax on
Ce n’est pas idéal, mais cela ne semble pas fonctionner avec .vimrc. Et cela ne fonctionne pas lorsque la syntaxe sur
précède la détection du type de fichier. Je suppose donc qu'il existe un conflit dans l'interaction entre les éléments mettant en évidence la syntaxe et les éléments correspondants.
Autres conseils
Utilisez la commande suivante pour voir si le plug-in a été chargé:
:let loaded_matchit
Si vous obtenez une erreur de variable non définie, le plug-in n'a pas été chargé. Assurez-vous que '/cygdrive/y/.vim' est dans votre option 'runtimepath' (utilisez ': set runtimepath?
')
Notez également que le plug-in matchit ne se charge pas si l'option "compatible" est activée.
Vous voudrez peut-être lire à travers : il correspond
. La section sur la configuration pourrait vous aider.
: il matchit-debug
- informations de débogage spécifiques à matchit
: il débogue
- débogage général de vim (vous pouvez faire toutes sortes de choses sur les points d'arrêt / les étapes)
Un piège commun (mais ce n’est pas votre cas) est que le type de fichier html peut être pseudonyme si vous utilisez un plugin de modèle. (Par exemple, mon code HTML est converti en fichier html.djangotemplate) Essayez : set ft?
pour trouver votre type de fichier. vous devrez peut-être copier b: match_words
dans le ftplugin du type de fichier du modèle.
: echo b: match_words
- devrait donner une liste des expressions rationnelles au format HTML
également en cas de évident: les noms de script
doivent indiquer matchit.vim quelque part
Bonne chance
Je n’ai aucune idée de vim (à part l’utiliser beaucoup), mais j’ai constaté que le fait de placer les deux lignes suivantes dans mon fichier .vimrc a beaucoup aidé:
:source /usr/share/vim/addons/plugin/matchit.vim
:source /usr/share/vim/vim72/ftplugin/html.vim
Je suis sûr qu'il existe un moyen approprié, mais au moins cela a fonctionné pour moi.
A bientôt,
Joerg
J'ai obtenu les commandes ci-dessus pour fonctionner dans mon .vimrc en supprimant la plupart des autres conneries de ~ / vim, telles que ~ / .vim / ftdetect et ~ / .vim / ftplugin. Commencez avec un ~ / .vim propre et uniquement copier dans ce qui vous est spécifique, en évitant tout ce qui pourrait avoir une version plus récente dans $ VIMRUNTIME, et cela devrait fonctionner.