سؤال

أنا استخدم القضبان وأنا أحب كيف يمكنك استخدام 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')

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top