vim Neocompleteプラグインの使用問題の補完

2250 ワード

vim自動補完プラグインはYouCompleteMe、Neocompleteなどがあり、
YouCompleteMeは補全神器で、スピードは速いが、windowsの下でコンパイルしにくいのでNeocompleteを選んだ.
Windows下Neocompleteのluaサポート
  • vim
  • を取り付ける
    Neocompleteはvimコンパイル時に+luaのサポートを追加する必要があります.vim公式サイトでダウンロードしたインストールバージョンには+luaのサポートはありません.
    コンパイルサポート+lua/dynのバージョンを見つけて、ダウンロードした後に正しいdllファイルを見つけてvimディレクトリに置くだけでいいです.
    https://tuxproject.de/projects/vim/
    ダウンロード後の解凍
  • lua
  • をコンパイルサポートするかどうかを確認します.
    vimを開き、コマンドモードに入り、versionを入力します.中に+lua/dynというものがあります.:lua print('hello')を入力し、luaがあるかどうかを確認し、ある場合はhelloを出力します.
    いいえ、lua53.dllのような情報が欠けていることを示すなど、欠落している特定のバージョンがプロンプトされます.
  • lua 53.dll
  • をダウンロード
    対応バージョンのダウンロード
    https://sourceforge.net/projects/luabinaries/files/5.3.4/Windows%20Libraries/Dynamic/
    ダウンロード解凍後、lua 53.dllをgvim.exe同級ディレクトリにコピー
    再びvimを開くと、コマンドモード入力:echo has("lua")が1に戻るとよい.
    注意:lua 53.dllのバージョンはvimのバージョンに対応する必要があります.いずれも64ビット、または32ビットのバージョンです.
    Neocompleteの使用中に問題が発生
  • システムにpy 3バージョンのみインストールpy 2バージョンpythonがない場合
  • 次のエラーメッセージが頻繁に表示されます.
    E117: unknown function:pythoncomplete#Complete
    
    versionを表示します.+pythonと+python 3があります.
    その後、echo has(“python”)を表示し、結果は0であった.echo has(“python3”)、結果は1です.
    問題はneocompleteが補完メソッドを呼び出すときにpython 2のファイルを使用するべきで、python 3に変更する必要があります.
    問題は、.vimrcの3つのpythoncompleteをpython 3 completeに変更し、以下のようにします.
    autocmd FileType python setlocal omnifunc=python3complete#Complete
    
  • とマルチカーソル操作プラグインの競合(MULTIPLE-CRURSORS)
  • 「vim-multiple-cursor」を使用して、挿入モードで何かを入力します.遅くなり、次のように追加されます.(neocomplete_start_auto_complete)
    vimrcプロファイルに次の構成を追加できます.
    " Called once right before you start selecting multiple cursors
    function! Multiple_cursors_before()
      if exists(':NeoCompleteLock')==2
        exe 'NeoCompleteLock'
      endif
    endfunction
    
    " Called once only when the multiple selection is canceled (default )
    function! Multiple_cursors_after()
      if exists(':NeoCompleteUnlock')==2
        exe 'NeoCompleteUnlock'
      endif
    endfunction
    

    このロックとロック解除により、neocompleteが複数のカーソル編集を完了するまで関数呼び出しをトリガーすることを防止できます.