كيفية تصحيح كسر VIM Collectfunc في ملفات HAML؟
-
18-09-2019 - |
سؤال
أنا استخدم القضبان وأنا أحب كيف يمكنك استخدام CTRL-X. Ctrl-U. في وضع "إدراج" لإكمال أسلوب أسماء طويلة distance_of_time_in_words
و accepts_nested_attributes_for
. وبعد ولكن لسبب ما لا يعمل في ملفات Haml ولا يمكنني معرفة ما هو الخطأ أو كيفية إصلاحه.
:help i_CTRL-X_CTRL-U
يقول التلقائي يستخدم completefunc
. وبعد ملف HAML يقول إنه completefunc=syntaxcomplete#Complete
(وهو نفسه في erb وملفات المساعد حيث CTRL-X. Ctrl-U. يعمل بشكل جيد.) لا أستطيع أن أجد أين syntaxcomplete#Complete
يتم تعريف السحر، ولكن من المفترض أن يكون له علاقة بناء جملة Filetype. لي .vim/syntax/haml.vim
يأتي من VIM-HAML., ، لذلك حاولت إزالة ذلك ولكن المشكلة تستمر. التعليق على بلدي كامل .vimrc
لم يساعد أيضا. ماذا يمكنني أن أحاول؟
تحديث: لقد بحثت ملفات تكوين VIM والمكان الوحيد الذي يبدو أنه يفعل أي شيء به syntaxcomplete#Complete
في داخل autoload/rails.vim
ويبدو أن هذا:
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
المحلول
يتم تعريف الوظائف مع # في الاسم في البرامج النصية التلقيح المحفوظة:
وظيفة يمكن التحميل المحبط لها اسم مثل هذا:
: استدعاء اسم الملف # اسم المستخدم ()
عند استدعاء هذه الوظيفة، ولا يتم تعريف VIM على دلائل "التحميل التلقائي" في "Runtimepath" للحصول على ملف نصي يسمى "filename.vim". على سبيل المثال "~ / .vim / autoload / filename.vim".
يرى :help autoload
.
نصائح أخرى
يشبه الملف الذي تبحث عنه هو جزء من VIM:
$ find /usr/share/vim/ -iname "syntaxcomplete.vim"
/usr/share/vim/vim72/autoload/syntaxcomplete.vim
هناك VIM.ORG الصفحة مع أحدث إصدار من البرنامج النصي.
إذا كنت ترغب في تخصيص الانتهاء، فيمكنك فقط كتابة وظيفة الإنجاز الخاصة بك. يرى :help complete-functions
تستطيع ايضا استخذام كنترول+ن لاستخدام إكمال VIM بسيط. يكمل النص من أي من الملفات المفتوحة، ولكن يمكن تخصيصها. (يرى :help 'complete'
)