0

私はrails.vimを使用していますが、挿入モードでandctrl-x ctrl-uのような長いメソッド名をオートコンプリートする方法が大好きです。しかし、何らかの理由でそれはhamlファイルでは機能せず、何が悪いのか、またはそれを修正する方法を理解できないようです。distance_of_time_in_wordsaccepts_nested_attributes_for

:help i_CTRL-X_CTRL-Uオートコンプリートがを使用していると言いcompletefuncます。hamlファイルにはそのように書かれていますcompletefunc=syntaxcomplete#Complete(そして、erbファイルとhelperファイルでも同じように機能しますctrl-x ctrl-u)。魔法が定義されている場所はわかりませんが、syntaxcomplete#Completeおそらくファイルタイプの構文と関係があります。私はvim-haml.vim/syntax/haml.vimから来たので、それを削除しようとしましたが、問題は解決しません。私の全体をコメントアウトすることも役に立ちませんでした。他に何を試すことができますか?.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
4

2 に答える 2

0

名前に # が含まれる関数は、オートロード スクリプトで定義されます。

オートロードできる関数の名前は次のとおりです:
:call filename#funcname()
そのような関数が呼び出され、まだ定義されていない場合、Vim は「runtimepath」内の「autoload」ディレクトリを検索して、呼び出されたスクリプト ファイルを探します。 「ファイル名.vim」。たとえば、「~/.vim/autoload/filename.vim」。

を参照してください:help autoload

于 2009-12-10T12:45:37.000 に答える
0

お探しのファイルは vim の一部のようです:

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

スクリプトの最新バージョンを含むvim.org ページがあります。

補完をカスタマイズしたい場合は、独自の補完関数を作成するだけです。見る:help complete-functions

Ctrl+nを使用して、vim の単純な補完を使用することもできます。開いているファイルのテキストで補完されますが、カスタマイズできます。( を参照:help 'complete')

于 2011-04-16T18:00:18.090 に答える