Pregunta

Estoy usando rieles.vim y me encanta como puedes usar Ctrl-x Ctrl-U en modo de inserción para autocompletar nombres de métodos largos como distance_of_time_in_words y accepts_nested_attributes_for.Pero por alguna razón no funciona en archivos haml y parece que no puedo entender qué está mal o cómo solucionarlo.

:help i_CTRL-X_CTRL-U dice que el autocompletado está usando completefunc.El archivo haml dice que es completefunc=syntaxcomplete#Complete (y es lo mismo en los archivos erb y auxiliares donde Ctrl-x Ctrl-u funciona bien.) No puedo encontrar dónde syntaxcomplete#Complete La magia está definida, pero presumiblemente tiene algo que ver con la sintaxis del tipo de archivo.Mi .vim/syntax/haml.vim viene de vim-haml, así que intenté eliminarlo pero el problema persiste.Comentando todo mi .vimrc tampoco ayudó.¿Qué más puedo probar?

ACTUALIZAR:Busqué en mis archivos de configuración de vim y el único lugar que parece estar haciendo algo con syntaxcomplete#Complete es en autoload/rails.vim y se ve así:

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
¿Fue útil?

Solución

Las funciones con # en el nombre se definen en scripts de carga automática:

Una función que se puede hacer autoconsular tiene un nombre como este:
:llamar nombre de archivo#funcname()
Cuando se llama a dicha función y aún no se define, VIM buscará los directorios de "AutOload" en 'RuntimePath' para un archivo de script llamado "FileName.vim".Por ejemplo "~/.vim/autoload/nombredearchivo.vim".

Ver :help autoload.

Otros consejos

Parece que el archivo que está buscando es parte de vim:

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

Hay una href="http://www.vim.org/scripts/script.php?script_id=3172" rel="nofollow"> vim.org página

Si desea personalizar la realización, sólo puede escribir su propia función finalización. Ver :help complete-functions

También puede utilizar Ctrl + n para utilizar la terminación sencilla de vim. Se completa con el texto de cualquiera de los archivos abiertos, pero se puede personalizar. (Ver :help 'complete')

scroll top