Отладка плагина matchit в vim (под Cygwin) - PullRequest
2 голосов
/ 17 сентября 2009

Плагин "matchit" для vim должен позволять вам использовать клавишу % для перехода между соответствующими начальными / конечными тегами при редактировании HTML, а также /* и */ разделители комментариев при редактировании других типов кода.

Я следовал точным инструкциям в ":help matchit", но % все еще не работает для меня.

Кажется глупым спрашивать "Почему это не работает?" поэтому вместо этого я спрашиваю Как я могу диагностировать проблему? Указатели на ссылки приветствуются, но предпочтительны конкретные методы отладки vim-plugin.

Вот каталог ~ / .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 .

Я использую vim 7.2 под Cygwin (установлен осенью 2008 г.). cygcheck показывает:

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, :set показывает:

--- 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. (Синтаксис раскраски просто отлично.)

Если необходима дополнительная информация, пожалуйста, прокомментируйте.

UPDATE:

За ответ по слишком много php :

После попытки vim -V1, я изменил свой .vimrc, чтобы включить строку

set nocp

, поэтому опция compatible не включена.

: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

(~ is /cygdrive/y)

За ответ Майкл :

: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

Обратите внимание, что все matchit.vim, html.vim, tohtml.vim, css.vim и javascript.vim присутствуют.

:echo b:match_words

E121: Undefined variable: b:match_words
E15: Invalid expression: b:match_words

Хм, это выглядит очень актуально. Сейчас я просматриваю :help matchit-debug, чтобы узнать, как исправить b:match_words.

Ответы [ 5 ]

2 голосов
/ 13 февраля 2010

Благодаря этой публикации из списка рассылки vim_use я нашел последовательность команд, которая работает:

vim -u NONE somefile.html

(запускается vim без чтения .vimrc)

Тогда

:set nocp
:source /usr/share/vim/vim72/macros/matchit.vim
:filetype plugin on
:filetype detect
:syntax on

Это не идеально, но, похоже, не работает с .vimrc. И он не работает, когда syntax on предшествует обнаружению типа файла, поэтому я подозреваю, что существует конфликт во взаимодействии между компонентами подсветки синтаксиса и соответствующими элементами.

1 голос
/ 18 сентября 2009

Возможно, вы захотите прочитать :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

Удачи

1 голос
/ 12 февраля 2010

Я понятия не имею о vim (кроме того, что часто его использую), но я обнаружил, что добавление следующих двух строк в мой .vimrc очень помогло:

:source /usr/share/vim/addons/plugin/matchit.vim
:source /usr/share/vim/vim72/ftplugin/html.vim

Я уверен, что есть правильный путь, но, по крайней мере, это сработало для меня.

Приветствия

Йорг

1 голос
/ 18 сентября 2009

Используйте следующую команду, чтобы увидеть, был ли загружен плагин:

:let loaded_matchit

Если вы получили неопределенную ошибку переменной, то плагин не был загружен - вы должны убедиться, что «/cygdrive/y/.vim» находится в вашем параметре «runtimepath» (используйте «:set runtimepath?»)

Также обратите внимание, что плагин matchit не загружается, если включена опция «совместимый».

0 голосов
/ 28 марта 2010

Я получил команды выше для работы в моем .vimrc, удалив большинство других дерьмов в ~ / vim, таких как ~ / .vim / ftdetect и ~ / .vim / ftplugin. Начните с чистого ~ / .vim и только скопируйте то, что конкретно для вас, избегая всего, что может иметь более новую версию в $ VIMRUNTIME, и она должна работать.

...