[解決済み】Vimのオートコンプリートについて
質問
一応、検索しているのは 作業中 Vim エディタのオートコンプリート機能。私は 以前論じた Vim は Linux では IDE に完全に取って代わるもので、確かにその通りなのですが、1つ重要な機能が欠けています。
について知っています。 Ctrl + N , Exuberant Ctagsの統合 , タグリスト , 完成 および OmniCppComplete . しかし、これらのどれもが、私が説明した「動作するオートコンプリート:」に当てはまりません。
-
Ctrl
+
N
は、スペルの書き方を忘れてしまった場合にうまく機能します。
class
またはwhile
. まあいいや。 - Ctags は初歩的なことを教えてくれますが、多くの欠点があります。
- タグリスト は単なる Ctags ラッパーであり、その欠点のほとんどを受け継いでいます(ただし リスト の宣言があります)。
- cppcomplete それとも、「正しく」動作しており、この制限は設計によるものなのでしょうか?
-
OmniCppComplete
は、cppcompleteと同じ問題があるようです。つまり、オートコンプリートが正しく動作しないのです。さらに
tags
ファイルをもう一度手動で更新する必要があります。
最近の本格的なIDEでさえ、C++のコード補完がうまくいっていないことは承知しています。だから今までVimのこの分野での不足を受け入れてきたのです。しかし、基本的なレベルのコード補完は無理もないし、むしろ生産的に使うためには必要なことだと考えています。そこで、少なくとも以下のようなことを実現できるものを探しています。
-
<強い シンタックスの認識 cppcompleteは、以下のような、スコープを意識した正しい自動補完を約束します(ただし、私には実現できません)。
variableName.abc variableName->abc typeName::abc
そして、本当にそれ以外のものは全く意味がありません。
-
コンフィギュラビリティ . ソースファイルがどこにあるか、つまりスクリプトが自動補完情報を取得する場所を(簡単に)指定する必要があるんだ。実際、私のディレクトリには、必要なインクルードパスを指定するMakefileがあります。Eclipseはその情報を解釈できるのに、なぜVimスクリプトはできないのでしょうか?
-
最新性 . ファイル内で何かを変更したら、すぐにオートコンプリートに反映させたいのです。私は ではなく を手動で起動したい。
ctags
(またはそれに匹敵する何か)。また、変更点は インクリメンタル つまり、1つのファイルだけを変更した場合、それは完全に 受け入れがたい に対してctags
を使用して、ディレクトリツリー全体を再解析します (巨大になる可能性があります)。
何か忘れていることはないですか?遠慮なく更新してください。
私は、多くの設定やいじくり回しは平気ですが、ゼロからソリューションをプログラムするのは嫌ですし、Vimスクリプトのデバッグも得意ではありません。
最後に、本当はJavaやC#でも同じようなものが欲しいのですが、それは望み過ぎでしょうかね。
ctags
はコードファイルを解析するだけで、Java と C# はどちらもインデックスを作成する必要のある巨大なプリコンパイルされたフレームワークを持っています。残念ながら。
IDEなしで.NETを開発する
は、C++よりもさらに厄介なものです。
どうすればいい?
試す ユーコンプリートミー . libclang インタフェースを介して Clang を使用し、セマンティックな C/C++/Objective-C 補完を提供します。clang_complete によく似ていますが、かなり高速で、ファジーマッチングを行います。
上記以外にも、YCMはC#、Python、Go、TypeScriptなどのセマンティック補完も提供しています。また、セマンティックに対応していない言語に対しては、識別子ベースの非セマンティック補完を提供する。
関連
-
[解決済み] Vimエディタを終了するにはどうすればよいですか?
-
[解決済み] Vimで文字を改行で置き換える方法
-
[解決済み] Vim 直前の検索ハイライトをクリアする
-
[解決済み] Vimで大文字小文字を区別しない検索をする方法
-
[解決済み] Vimで行全体を複製する方法は?
-
[解決済み] Vimで行のコメント/アンコメントを素早く行う方法は?
-
[解決済み] vimにテキストをペーストする際の自動インデントをオフにする
-
[解決済み] Vimで最も生産性の高いショートカットは何ですか?
-
[解決済み】vimの「sudoで書く」トリックはどうやるの?
-
[解決済み】Vimで複数のファイルを効率的に操作する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】テンプレートの引数1が無効です(Code::Blocks Win Vista) - テンプレートは使いません。
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】エラー。switchステートメントでcaseラベルにジャンプする
-
[解決済み】浮動小数点数の乱数生成
-
[解決済み】C++ - 適切なデフォルトコンストラクタがない [重複]。
-
[解決済み】警告 - 符号付き整数式と符号なし整数式の比較
-
[解決済み] 配列のベクトルを扱う正しい方法
-
[解決済み】c++で.txtファイルから2次元の配列に読み込む
-
[解決済み】Linux用C++IDE?[クローズド]