2

私は Linux の初心者ですが、ついに試してみることにしました。最近 openSUSE をインストールしました。Windows 7 では、c/c++ プログラミングに Visual Studio を使用しました。Linux で IDE を見つけようとしましたが、KDevelop を試してみましたが気に入らなかったので、VIM をソース コード エディターとしてセットアップすることにしました。

まず、オートコンプリートを見つける必要がありました。GCCSense と clang_complete についていくつか読みましたが、今のところ、これらのインストールは少し複雑なので、omnicpp と ctags に落ち着きました。

omn​​icpp をダウンロードしてそれらのファイルを ~/.vim フォルダーに置き、ctags をインストールしました。私の .vimrc は次のようになります。

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

試してみるために、単純な .c ファイルを作成しました

struct str
{
    int aaa;
};

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

入力モードではないときに F8 を押すと、.c ファイルが見つかったときにタグ ファイルが生成されるはずです (map :!/usr/bin/ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .) しかし、そのようなファイルは生成されません。私が間違っていることは何ですか?

4

3 に答える 3

2

編集:

デフォルトでは、vim も gvim も現在のディレクトリを変更しません。したがって、コマンドは環境の現在の作業ディレクトリで実行されます。つまり、実行した場合:

cd / && vi ~/prog/c/file.c

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<CR>

それ以外の場合は、「+」文字をエスケープできます:

map <F8> :!/usr/bin/ctags -R --c\+\+-kinds=\+p --fields=\+iaS --extra=\+q .<CR>
于 2011-08-03T22:55:08.897 に答える
0

オムニ:

これを見たり参照したりした人はいますか?

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

タグ:

ヒップからのショット (読み取り: 未テストおよび未検証) 現在のディレクトリに CD を実行してみてください。

map <F8> :cd %:p:h <Bar> :!/usr/bin/ctags -R --c\+\+-kinds=\+p --fields=\+iaS --extra=\+q .<CR>
于 2011-08-04T01:58:32.703 に答える
0

わかりました、すべての回答に感謝します。問題の原因がどこにあるかがわかりました。ターミナル F8 から VIM を実行すると正常に動作し、!pwd と入力すると、.c ファイルがあるディレクトリ (例: ~/prog/C) が表示されますが、GvIM を使用して同じ .c ファイルを開いて入力すると、 !pwd ~/dokumenty と表示されるので、問題は VIM/GVIM のどこかにあると思います。どのファイルを開いても、GVIM がフォルダーを認識しないのはなぜですか?

---編集--- set autochdir を .vimrc に追加したところ、すべてが正常に機能し、問題は解決しましたが、ターミナルから VIM を実行したときにすべてが機能していた理由について、誰かが答えてくれればありがたいです ( autochdir はオフにされていましたが、GVIM では機能しませんでした。

于 2011-08-04T09:38:33.870 に答える