Articles

neovim ruby/rails omnicomplete

Por el mensaje de error que recibes, parece que tu Vim no tiene soporte para Ruby compilado.

Mira este fragmento de código:

if !has('ruby') call s:ErrMsg( "Error: Rubycomplete requires vim compiled with +ruby" ) call s:ErrMsg( "Error: falling back to syntax completion" ) " lets fall back to syntax completion setlocal omnifunc=syntaxcomplete#Complete finishendif

El mensaje de error en negrita es el que estás viendo. (Si escribes :messages probablemente verás el otro mensaje de error, más explícito, sobre la falta de soporte para Ruby.)

Puedes confirmar que falta soporte para Ruby usando el comando :version en Vim para obtener una lista de características. Verás -ruby, ya que te falta el soporte para Ruby. (Verías +ruby si estuviera disponible.)

Según tu pregunta, estás usando NeoVim en Debian Buster, así que quizás intenta instalar el paquete ruby-neovim para ver si eso resuelve el problema y habilita el soporte para Ruby en tu NeoVim…

set omnifunc=syntaxcomplete#Complete parece funcionar. No estoy seguro de que sea la forma correcta…

Eso te dará algo de terminación, pero probablemente no tan rica como la terminación específica para Ruby de rubycomplete.

La función syntaxcomplete#Complete utilizará las reglas de resaltado de sintaxis de Vim para ofrecer la finalización de inserción, que en su mayor parte cubre las palabras clave del lenguaje que son resaltadas por las reglas de sintaxis.

Vea :help ft-syntax-omni:

Vim tiene la capacidad de resaltar por colores la sintaxis de casi 500 idiomas. Parte de este resaltado incluye saber qué palabras clave forman parte de un lenguaje. Muchos tipos de archivos ya tienen scripts de completado personalizados escritos para ellos, el plugin syntaxcomplete proporciona un completado básico para todos los demás tipos de archivos. Lo hace rellenando la lista de compleción omnicanal con el texto que Vim ya sabe cómo resaltar en color. Se puede utilizar para cualquier tipo de archivo y proporciona una terminación mínima sensible al lenguaje.

Así que esto podría ser adecuado y mejor que nada… Pero yo esperaría que usted obtendría una terminación superior usando rubycomplete en su lugar.

Con estos ajustes:

autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1autocmd FileType ruby,eruby let g:rubycomplete_rails = 1

Estos son globales y están destinados a ser establecidos directamente desde su vimrc y no en un autocmd de tipo de archivo.

Esto podría ser importante ya que podría tener problemas de orden (estos sólo se establecen después de que los plugins vim-ruby traten de inspeccionarlos, produciendo un resultado incorrecto), o podría obtener un comportamiento diferente del primer archivo Ruby que edite a los subsiguientes (ya que el primero los establece globalmente, ya estarán establecidos cuando se abra el segundo archivo.)

Sólo evite estos problemas por completo estableciéndolos directamente, como se pretende:

let g:rubycomplete_buffer_loading = 1let g:rubycomplete_classes_in_global = 1let g:rubycomplete_rails = 1