Pergunta

O "matchit" plugin para vim é suposto para permitir que você use a tecla % para saltar entre correspondentes de tags de início / fim, quando a edição de HTML, bem como /* e comentar */ delimitadores ao editar outros tipos de código.

Eu segui as instruções exatas em ":help matchit", mas % ainda não funciona para mim.

Parece bobagem de perguntar "Por que não faz este trabalho?" então ao invés eu estou pedindo Como posso diagnosticar o problema? Ponteiros para referências são bem-vindos, mas técnicas específicas vim-depuração-plugin são os preferidos.

Aqui é o ~ / .vim diretório:

$ 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 .

Estou executando vim 7.2 sob Cygwin (Fall instalado 2008). mostra 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

No vim, shows :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

Notavelmente, a sintaxe e filetype são ambos reconhecidos como HTML. (A coloração de sintaxe é apenas multa.)

Se a informação adicional é necessária, por favor comentário.

UPDATE:

Por resposta por muito php :

Depois de tentar vim -V1, eu tinha mudado meu .vimrc para incluir uma linha

set nocp

então a opção compatible não está ligado.

: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

(~ é /cygdrive/y)

Por resposta por 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

Note que matchit.vim, html.vim, tohtml.vim, css.vim e javascript.vim estão todos presentes.

:echo b:match_words

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

Hm, isso parece altamente relevante. Agora estou olhando através :help matchit-debug para descobrir como corrigir b:match_words.

Foi útil?

Solução

Graças a desta postagem do vim_use lista de discussão, eu encontrei uma seqüência de comandos que funciona:

vim -u NONE somefile.html

(Isso inicia vim sem ler Vimrc)

Em seguida,

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

Não é o ideal, mas não parece trabalho a partir .vimrc. E ele não funciona quando precede syntax on a detecção filetype, então eu suspeito que há um conflito na interação entre a sintaxe destacando coisas e combinando coisas.

Outras dicas

Use o seguinte comando para ver se o plugin foi carregado:

:let loaded_matchit

Se você receber um erro variável indefinida, então o plugin não foi carregado - você deve se certificar de que '/cygdrive/y/.vim' está na sua opção 'runtimePath' (uso ':set runtimepath?')

Além disso, note que o matchit plugin não carregar se a opção 'compatíveis' está ligado.

Você pode querer ler através :he matchit. A seção sobre poder de configuração ajuda.

:he matchit-debug - depuração de informações específicas para matchit

:he debug - depuração geral vim (você pode fazer todos os tipos de ponto de interrupção / passo através de coisas)

A pegadinha comum (não o seu caso, porém) é o tipo de arquivo html pode ser cortado se você estiver usando um plugin modelo. (Ex. O meu html é transformado em html.djangotemplate) Tente :set ft? para encontrar o seu tipo de arquivo. talvez seja necessário copiar b:match_words no ftplugin para o filetype modelo.

:echo b:match_words - deve dar uma lista de html procura de regex

Também no caso do :scriptnames óbvio deve mostrar algum lugar matchit.vim

Good Luck

Eu não tenho nenhuma pista sobre vim (além de usá-lo muito), mas eu achei que colocar o followng duas linhas no meu .vimrc ajudou muito:

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

Estou certo de que há uma maneira correta, mas pelo menos isso funcionou para mim.

Cheers,

Joerg

Eu tenho os comandos acima para o trabalho no meu .vimrc removendo na maioria das outras tretas em ~ / vim, como ~ / .vim / ftdetect e ~ / .vim / ftplugin. Comece com um pano limpo ~ / .vim única e copiar em específico do que para você, evitando qualquer coisa que possa tem uma versão mais recente em $ VIMRUNTIME, e ele deve funcionar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top