0

vim で omnicppcomplete を使用すると問題が発生します。実際、それが .vimrc の問題なのか、omnicppcomplete の問題なのかはわかりません。私の .vimrc には、ctrl+F12 を押したときにプロジェクトのタグを生成する次のコマンドがあります。

map <C-F12> :!ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q .<CR>

しかし、このエラーで失敗します:

ctags: Unknown option: --c++-n

shell returned 1

コマンドで --c++-n オプションを使用していないため、非常に奇妙に思えます。私にとってさらに奇妙なのは、ターミナルでコマンドを手動で実行した場合です

ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q

タグファイルが生成され、すべてがうまく機能しているようです。したがって、それをキーにマッピングすることについて何かが混乱しています。ここの wiki の指示に従いました: http://vim.wikia.com/wiki/C%2B%2B_code_completion

--c++-n を使用しないのになぜ文句を言うのか、私はほとんど混乱しています。どんな助けでも大歓迎です。

編集:

vim の ":!which ctags" とシェルの "which ctags" はどちらも "/usr/bin/ctags" を返します。ただし、「ls /usr/bin | grep ctags」を実行すると、「ctags」と「ctags-exuberant」の両方が返されます。

ctags-exuberant を削除して再インストールしました。今、vim で c-F12 を打とうとしても、コマンドでエラーは発生しません... シェルに戻って Enter キーを押して続行しますが、コードではオブジェクト、まだ「パターンが見つかりません」と表示されます。

ただし、次のような小さなテスト ファイルを別のディレクトリに作成すると、次のようになります。

struct MyStruct {
  int a;
  int b;
  int long_name;
};

int main(int argc, char** argv) {

  MyStruct a;
  a.      
}

c-F12 を押してタグリストを作成すると、オートコンプリートが正常に機能します...別のファイルで定義されているクラスがある場合に機能させたいです (ただし、同じディレクトリにあります)。

4

2 に答える 2

4

問題はキー マッピングではありません。マッピング行を my にコピーして.vimrcgvim で ctrl-f12 を押すと、実行するコマンドがエコーされ、まさに上記のコマンドになります。

vim を使用しているときに、ctags別のファイル/実行可能ファイルがある可能性はありますか? :!which ctagsvimで何をwhich ctags言い、シェルから何を言いますか?

于 2013-07-10T16:06:03.210 に答える