Question

J'utilise rails.vim et j'aime la façon dont vous pouvez utiliser ctrl-x ctrl-u en mode d'insertion de autoComplete longs noms de méthode comme distance_of_time_in_words et accepts_nested_attributes_for. Mais pour une raison quelconque, il ne fonctionne pas dans les fichiers de HAML et je ne peux pas à comprendre ce qui ne va pas ou comment y remédier.

:help i_CTRL-X_CTRL-U dit que le autocomplétion utilise completefunc. Le fichier haml dit son completefunc=syntaxcomplete#Complete (et il est le même dans les fichiers erb et aide où ctrl-x ctrl-u fonctionne très bien.) Je ne peux pas trouver où la magie de syntaxcomplete#Complete est défini, mais on peut supposer qu'il a quelque chose à voir avec la syntaxe de type de fichier. Mon .vim/syntax/haml.vim vient de vim-haml , donc j'ai essayé de le retirer, mais le problème persiste. Commentant toute ma .vimrc n'a pas aidé non plus. Que puis-je essayer?

Mise à jour: Je cherchai mes fichiers de configuration vim et le seul endroit qui ressemble qu'il fait quoi que ce soit avec syntaxcomplete#Complete est en autoload/rails.vim et ressemble à ceci:

function! s:resetomnicomplete()
  if exists("+completefunc") && &completefunc == 'syntaxcomplete#Complete'
    if exists("g:loaded_syntax_completion")
      " Ugly but necessary, until we have our own completion
      unlet g:loaded_syntax_completion
      silent! delfunction syntaxcomplete#Complete
    endif
  endif
endfunction
Était-ce utile?

La solution

Fonctions avec # dans le nom sont définis dans les scripts autoload:

  

Une fonction qui peut être chargée automatiquement a un nom   comme ceci:
      : Appel nom de fichier # funcname ()
  Lorsqu'une telle fonction est appelée, et il est pas encore défini, Vim cherchera la   répertoires « autoload » dans « runtimepath » pour un fichier de script appelé   "Filename.vim". Par exemple, "~ / .vim / autoload / filename.vim".

Voir :help autoload.

Autres conseils

On dirait que le fichier que vous cherchez est une partie de vim:

$ find /usr/share/vim/ -iname "syntaxcomplete.vim"
/usr/share/vim/vim72/autoload/syntaxcomplete.vim

Il y a une page vim.org avec la dernière version du script.

Si vous voulez personnaliser l'achèvement, vous pouvez simplement écrire votre propre fonction d'achèvement. Voir :help complete-functions

Vous pouvez également utiliser Ctrl + n pour utiliser l'achèvement de simples vim. Il complète avec le texte de l'un des fichiers ouverts, mais peut être personnalisé. (Voir :help 'complete')

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top