2011-08-03 7 views
2

私はLinux初心者ですが、結局私はopenSUSEをインストールしました。 Windows 7では、私はVisual Studio for C/C++プログラミングを使用しました。私はLinux上でIDEを見つけようとしましたが、KDevelopを試しましたが、それが気に入らなかったので、VIMをソースコードエディタに設定しようと決めました。VIM + ctags + omnicppcomplete

私はいくつかの自動補完を見つける必要がありました。私はGCCSenseとclang_completeについていくつかのことを読んでいますが、今はこれらをインストールするのがちょっと複雑ですので、omnicppとctagsを解決しました。

私はomnicppをダウンロードして〜/ .vimフォルダに入れました。私はctagsをインストールしました。私は入力モードではないですとき、それは時に所定の位置にタグファイルを生成する必要がありますF8キーを押し

struct str 
{ 
    int aaa; 
}; 

int main() 
{ 
    str *wsk; 
    wsk->aaa=5; 
    return 0; 
} 

私はシンプル.Cファイルを作ったので、それを試して

set number 

" --- OmniCppComplete --- 
" -- required -- 
set nocp " non vi compatible mode 
filetype plugin on " enable plugins 

" -- optional -- 
" auto close options when exiting insert mode 
autocmd InsertLeave * if pumvisible() == 0|pclose|endif 
set completeopt=menu,menuone 

" -- configs -- 
let OmniCpp_MayCompleteDot = 1 " autocomplete with . 
let OmniCpp_MayCompleteArrow = 1 " autocomplete with -> 
let OmniCpp_MayCompleteScope = 1 " autocomplete with :: 
let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert) 
let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files 
let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype (i.e. parameters) in popup window 

" -- ctags -- 
" map F8 to generate ctags for current folder: 
map <F8> :!/usr/bin/ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR> 
" add current directory's generated tags file to available tags 

set tags=./tags,tags,/home/andrzej/vim/commontags 

:私の.vimrcにはこのようになります(マップ:!/ usr/bin/ctags -R --C++ - 種類= + p - 欄= + iaS - =倉庫= + q。)しかし、このようなファイルは生成されません。私が間違っていることは何ですか?

+1

実際、私は 'clang_complete'は簡単な方法だと思っていますが、より良い結果が得られます。 – tungd

答えて

2

編集:

どちらvimのも、デフォルトでは、あなたのためにカレントディレクトリを変更gvimを。したがって、コマンドは環境の現在の作業ディレクトリで実行されます。要するに、実行した場合:

あなたはgvimで持っているviと同じ "問題"があります。だから私は私のコメントで示したバインディングに絶対パスを使用したのです。 autochdirを使用することは、あなたが期待している動作であれば、合理的な解決策です。

オリジナル:

問題が+文字のようです。私は~/.ctagsにあなたのctagsの引数を置くことをお勧めしたい:

$ echo -e "--c++-kinds=+p\n--fields=+iaS\n--extras=+q" > ~/.ctags 
$ cat ~/.ctags 
--c++-kinds=+p 
--fields=+iaS 
--extra=+q 

その後に自分のマッピングを変更:

map <F8> :!/usr/bin/ctags -R --c\+\+-kinds=\+p --fields=\+iaS --extra=\+q .<CR> 
+0

F8キーを押したときにタグファイルが作成されませんでしたが、このフォルダを手動で入力したときにcタグを使用した場合、タグファイルが作成されました。 – Andrew

+0

'F8'を押すとどうなりますか?あなたは正しいディレクトリにいますか?正直なところ、私はただ1つのプロジェクトに取り組んでいるだけなので、 'map :!ctags -f〜/ prj/tags -R〜/ prj 'を使ってどこからでも実行できます。 – bhinesley

+0

'F8'が別のvimバインディングや、ウィンドウマネージャや端末からのバインドと競合している可能性もあります。 'nmap ; c:!/ usr/bin/ctags -R 'を使って '; c'にバインドすることができます。 – bhinesley

0

map <F8> :!/usr/bin/ctags -R<CR> 

そうでない場合、あなたは '+' 文字をエスケープすることができますオムニ

誰でも見るまたはこれを参照?

https://llvm.org/svn/llvm-project/llvm/trunk/utils/vim/vimrc

タグ:ヒップから

ショット(読み:未テストおよび検証されていない)現在のディレクトリにCD'ing試してみてください。

map <F8> :cd %:p:h <Bar> :!/usr/bin/ctags -R --c\+\+-kinds=\+p --fields=\+iaS --extra=\+q .<CR> 
0

[OK]をお寄せいただきありがとうございます。ご回答いただきありがとうございます。問題の原因がわかりました。私はV8をターミナルF8から起動するとうまく動作しますが、!pwdと入力すると、自分の.cファイル(ex。〜/ prog/C)のディレクトリが表示されますが、GvIMを使用して同じ.cファイルを開き、 !それは〜/ dokumentyを示しているので、問題はVIM/GVIMのどこかにあると思う。私はGVIMがなぜファイルを開いてもフォルダを認識できないのだろうか?

---編集--- 私は.vimrcにset autochdirを追加しました。問題は解決しましたが、問題が解決しましたが、誰かが私に答えることができたら、感謝します。 (autochdirがオフになっていても)GVIMでは機能しませんでした。

関連する問題