プログラムに使用するときに、vimのオートコンプリート関数名や変数などを使用することはできますか?

多くのIDEは、ユーザーが入力すると、関数名、変数、メソッド名などを自動的に入力します。最高のものは、言語の組み込みライブラリと、同じプログラムの他のファイルですでに定義されているものの両方に基づいて名前を完成させます。

たとえば、次のように入力します。 Pythonプログラム:

hungy = True def eatFood(food): pass if hungry: eatF 

eatFは自動的にeatFood()利用可能なオートコンプリートオプションとして。

Vimにはこの機能がありますか?もしそうなら、どうすればそれを有効にできますか?

回答

vimにはさまざまな種類のオートコンプリートがあります。 1つの方法は、 SuperTab を使用することです。これは、多かれ少なかれいつでもタブ補完を使用する方法を提供します。これにより、単語を部分的に入力して完了リストを取得した後、 Tab を押すことができます。たとえば、eatFに続けて Tabと入力します。 eatFood.

に展開するには:これらの写真はすべて実際のGIFの例にリンクしています。

mg src = “https://i.stack.imgur.com/dVuOT.png” alt = “スーパータブの補完” title = “クリックしてgifを表示”>

Vimには他にも優れたオプションがあります。:h ins-completionを読んで確認してください。さまざまな組み込みの補完オプション。vimの Ctrl X Ctrl O を組み合わせて使用する jedi のようなpython対応プラグインは補完フレーバーを与えることができます。 Jediは、オムニコンプリーションに関するドキュメントを提供するように構成できます(これは、 Ctrl X Ctrl O が行うことです) )。次に、完了候補のドキュメントが分割ウィンドウに表示されます。

mg src = “https://i.stack.imgur.com/etSIu.png” alt = “ctrlxctrlo complete” title = “クリックしてgifを表示”>

同様のプラグインを使用しますが、オプションが異なると、あらゆる種類の動作が発生します。たとえば、オートコンプリートのプロンプトを表示する必要がない場合があります(それが目的の場合)。代わりに、単語の文字数(2または3など)を入力した後、プラグインで次のことができます。メニューで可能な補完をインテリジェントに提供するようにしてください。

mg src = “https://i.stack.imgur.com/gtNK0.png” alt = “ここに画像の説明を入力してください “title =”クリックしてgifを表示 “>

つまり、簡単な答えははいです!しかし、設定プロセスは少し複雑になる可能性があります。vimをマスターする長い階段のステップだと思います。

コメント

  • 'すべて試してみましたが、いつもSuperTabに戻ってきました。'最も邪魔になりません。
  • YouCompleteMeプラグインも非常に気に入っています。入力したとおりに提案され、提案を選択または無視できます。はい、視覚的に無視するのは難しいですが、ワークフローでは非常に邪魔になりません。必要条件キーストロークが少なくなります。
  • 'クリックすると、アニメーションが"に変更されました"、gifアニメーションにリンクされているという意味で。
  • '仕事用のコンピューターでYouCompleteMeを使用できないのは、依存関係をインストールするためのルートがない'、SuperTabが次善の選択です。
  • @mixedmath私の場合、superTabにはありません'機能しません。

回答

このような機能-つまり、現在のファイルを検索します(オートコンプリート用に開いているすべてのファイル)は、デフォルトでCtrl+P

使用中のオートコンプリートのスクリーンショットで有効にする必要があります

iv id = “3aa9c1ccc6″を使用して、 n extの提案に移動できます。 >

p

任意の文字を入力して選択します(提案の直後に追加されます)。

コメント

  • 編集者へ(Jasper):'将来書いたり、最初に書いたりするものではなく、最近書いたものをもう一度書きたいと思う可能性が高いです。ファイル。したがって、^Pはより自然な私見です。それ以外の場合は編集に感謝します(右ボタンをクリックして+2を取得したことを願っています)。
  • はい、架空のインターネットポイントを取得しました:)提案リストはアルファベット順に並べ替えられるといつも思っていました。 ..
  • @Jasperの出現順序(少なくとも私にとっては確かに、上記も参照:world,word,woodであり、その逆ではありません)。したがって、^Pは最後に使用された補完であり、非常に便利です(長いファイルであっても、リスト内の3項目を超えることはめったにありません)。
  • protip :inoremap <C-Space> <C-N>

回答

Vimはネイティブで完了をサポートしています。 :h ins-completionでVimがサポートするさまざまな補完について読むことができます。

一般的に、私が見つけたすべての目的のために、ins-補完は私の好みには十分ですただし、ins-completionsが提供する以上の価値を追加する補完プラグインがいくつかあります。 NeoComplete YCM(YouCompleteMe)も同じです。さまざまなタイプの補完をより正確に組み合わせようとするという意味でより高度であり、高度なキャッシュメカニズムも備えているため、より高速になる傾向があります。 YCMは、外部のコンパイラやユーティリティと連携して、より優れたIntelliSenseを提供することもできます。

回答

はい、オートコンプリートスクリプトvimが存在します。 「最良の」選択は、プログラミング言語によって異なります。サンプルコードはPythonなので、 Jedi を確認することをお勧めします。その上に構築するあなたは私を完成させます。これは他の言語もサポートしていますが、大きすぎると見なされることもあります。他の言語の場合は、 vimスクリプトの長いセットを参照できます。

回答

挿入モードで、単語の最初の数文字を入力し、次を押します。

Ctrl-N to insert the next matching word; or Ctrl-P to insert the previous matching word. 

これは、プログラム内の変数の名前。

「complete」オプションは、キーワードが検索される場所(ファイル、タグファイル、バッファーなどを含む)を制御します。

「completeopt」オプション完了の方法(たとえば、メニューを表示するかどうか)を制御します。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です