neovim ruby/rails omnicomplete
A hibaüzenetből, amit kapsz, úgy tűnik, hogy a Vim nem támogatja a Ruby-t.
Nézd meg ezt a kódrészletet:
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
A félkövérrel szedett hibaüzenet az, amit látsz. (Ha a :messages
-t írja be, valószínűleg a másik, egyértelműbb hibaüzenetet fogja látni, a Ruby támogatás hiányáról.)
A Ruby támogatás hiányát a Vimben a :version
paranccsal megerősítheti, hogy hiányzik a Ruby támogatás. Ekkor -ruby
fogsz látni, mivel hiányzik a Ruby támogatás. (Ha rendelkezésre állna, akkor +ruby
-t látnál.)
A kérdésedből ítélve a NeoVim-et Debian Buster-en használod, ezért talán próbáld meg telepíteni a ruby-neovim
csomagot, hátha ez megoldja a problémát, és lehetővé teszi a Ruby-támogatást a NeoVim-en?
set omnifunc=syntaxcomplete#Complete
úgy tűnik, működik. Nem biztos, hogy ez a helyes út?
Ez ad némi kiegészítést, de valószínűleg nem olyan gazdag, mint a rubycomplete
Ruby-specifikus kiegészítés.
A syntaxcomplete#Complete
funkció a Vim szintaxiskiemelő szabályait fogja használni a beillesztési kiegészítés felkínálásához, ami nagyrészt a szintaxis szabályokkal kiemelt nyelvi kulcsszavakra terjed ki.
Vö. :help ft-syntax-omni
:
A Vim közel 500 nyelven képes a szintaxis színes kiemelésére. Ennek a kiemelésnek része az is, hogy tudja, milyen kulcsszavak tartoznak egy nyelvhez. Sok fájltípushoz már írtak egyéni kiegészítési szkripteket, a syntaxcomplete plugin alapvető kiegészítést biztosít az összes többi fájltípushoz. Ezt úgy teszi, hogy az omni completion listát feltölti azokkal a szövegekkel, amelyeket a Vim már tud színesen kiemelni. Bármilyen fájltípushoz használható, és minimális nyelvérzékeny kiegészítést biztosít.
Szóval ez talán megfelelő és jobb, mint a semmi… De azt várnám, hogy a rubycomplete
használatával jobb kiegészítést kapsz helyette.
Ezekkel a beállításokkal:
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
Ezek globálok, és közvetlenül a vimrc-ből kell beállítani, nem pedig a filetype autocmd-ben.
Ez azért lehet fontos, mert sorrendezési problémáid lehetnek (ezek csak azután kerülnek beállításra, miután a vim-ruby pluginek megpróbálják megvizsgálni őket, ami helytelen eredményt ad), vagy eltérő viselkedést kaphatsz az első Ruby fájlban, amit szerkesztesz, mint a következőben (mivel az első globálisan állítja be őket, a második fájl megnyitásakor már be lesznek állítva.)
Elkerülheted ezeket a problémákat teljesen, ha közvetlenül állítod be őket, a szándék szerint:
let g:rubycomplete_buffer_loading = 1let g:rubycomplete_classes_in_global = 1let g:rubycomplete_rails = 1
.