vim構成(自動補完、自動生成tag、一部はプラグインtaglist、nerdtreeを使用)

11953 ワード

この文章はやはり前の文章の内容を引き受けた.
前編では、基本的なvimの構成方法について説明しました.今、私が使っているプラグインとインストール方法について説明します.
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
前の構成が完了したら、vimはもう使いやすいはずです.しかし、まだいくつかの問題が解決されていない.自動補完はありません.
もうすぐ出馬する.
1. omni complete
omni completeは使いやすい自動補完ツールで、多くの言語をサポートし、自動的に補完することができます.コンパイルインストールvim 73後、持参した.vimrcで開く
set nocp

filetype plugin on

set ofu=syntaxcomplete#Complete

1文目はクローズ互換モード、2文目はオープン整合ファイルタイプである.必ず加えて
開くと、多くのコードが自動的に補完されることがわかります.例えばcss、htmlなどよく仕事ができますが、
使用方法は
しかし、これはまだ足りません.c/c++プログラマーにとって、もっと強力なツールが必要です.クラスメンバー変数、クラスのメソッドも補完します!
だからomnicppcompleteが登場しました
ダウンロード:http://www.vim.org/scripts/script.php?script_id=1520
cp omnicppcomplete-0.41.zip ~/.vim

cd ~/.vim

unzip omnicppcomplete-0.41.zip

その後vimrcを開き、次のセグメントを追加します.
" OmniCppComplete

set completeopt=menu,longest,menuone

let OmniCpp_NamespaceSearch = 2

let OmniCpp_GlobalScopeSearch = 1

let OmniCpp_ShowAccess = 1

let OmniCpp_ShowPrototypeInAbbr = 1 

let OmniCpp_MayCompleteDot = 1   

let OmniCpp_MayCompleteArrow = 1 

let OmniCpp_MayCompleteScope = 1 

let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]

let OmniCpp_SelectFirstItem = 2

let OmniCpp_DisplayMode=1



au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif

再びvimを開くとomnicppがインストールされます.
しかし、このようなメンバー変数はまだ出てこないでしょう.
もともとomnicppはtagを利用して判断していたのでctagsを利用して生成する必要があります
まず機械にctagsがあることを保証し、5.4以上が望ましい.前にバグがあったようです.
所在するcppのディレクトリに入り、
うんてん
ctags --c-kinds=+px --c++-kinds=+px --fields=+iafksS --extra=+qf your_file.cpp

これによりtagファイルが生成されvimが開き、実行されます.
:set tags += tags

ロードされます.
使用するとき、遭遇するすると自動的にポップアップします.
でも、これはやはり面倒です.毎回ctagsを自分で実行してtagsをロードしなければなりません.そして、それは私たちの一部のライブラリのヘッダファイルも自動的に補完できないことを意味しますか?
まずtagsを自動的にロードしvimrcに追加
set tags+=tags

set tags+=/home/summer/tags/lib_tags

私たちが普段使っているヘッダファイルについては、自分で手動で1部生成して、固定したフォルダの下に置いて、その後コードを書くのが便利です.
例えば私のlib_tagsはlinuxのヘッダファイルをコンパイルして生成したものです
ctags --c-kinds=+px --c++-kinds=+px --fields=+iafksS --extra=+qf -R /usr/include/*

このtagがあればvimのジャンプ機能も発揮できる.覚えています--extraは必ず+fを要して、このようにヘッダファイルに出会って私达もヘッダファイルにジャンプすることができます.
また、現在のディレクトリの下のtagsを追加し、tagを生成するとvimは自動的にロードされます.
そして、tagsを自動的に生成する.実は、便利なツールを書いた人もいますが、以下に紹介します.
2. omnitags
これは中国人が書いたvimプラグインで、住所をダウンロードします
http://www.vim.org/scripts/script.php?script_id=2870
最新バージョンをダウンロードして~/.vim/pluginディレクトリの下でいいです.
vimrcの再変更
nmap <silent><leader>t :OmniTagsLoad ./tags<CR>

nmap <leader>u :OmniTagsUpdate

vimを再起動し、tagsを自動的に生成する必要がある場合は、まずロードします.
<leader>t

//      tag,      ,  y  

<leader>u your_files

//             tag ,

//     :w  ,tag     

今、omnicppcompleteに合わせて、コードを書くのが便利になりました.
しかし、ヒントはまだ知能的ではありません.そして、毎回補完するたびに、自分でctrl+x ctrl+oを手動で押さなければなりません.気分が悪くなりません.
3. autocomplpop
このプラグインは私たちの悩みを解決します.
ダウンロード:http://www.vim.org/scripts/script.php?script_id=1879
同じ
cp vim-autocomplpop.zip ~/.vim

unzip vim-autocomplpop.zip

いいですね.
このプラグインは非常に強力で、自動ポップアップも私たちの多くの機能を満たしています.例えば、自動的にファイルをポップアップするパスなどがある.
このプラグインのデフォルトはkeyword completionです.私たちはすでにomnicppcompleteを持っているので、実は十分です.
keywordの補完力は非常に強い.でも、全部omni compを使ったほうがいいと思う人もいるかもしれません.
そこでネットでこんなコードを探しました
let g:AutoComplPop_Behavior = { 

\ 'c': [ {'command' : "\<C-x>\<C-o>",

\ 'pattern' : ".",

\ 'repeat' : 0}

\ ] 

\}

実はこれは役に立たないので、使いたいなら2つの方法があります
1.2.6以降のautocomplpopをダウンロード
2.7からautocomplpopは構成方式を変更したので、以前の古いバージョンは無効になりました.
2.書き方を直す
let g:acp_behavior = {

    'command' : "\<C-x>\<C-o>",

    'meets': mycppfunc

    'repeat':0    

}

にありますvim/autoLoad/acp.vimに関数を追加
奥のacp#meetsForKeywordの関数に従って書けばいいです.
function mycppfunc(context)

    return 1

endfunction

しかし、これはプロジェクトが大きくなってからとても遅いので、あまりお勧めしません.デフォルトの方法でいいです.効率も高い
4. NERDTreeToggle
これはファイルの木の構造を表示するプラグインで、とても便利で、普通はみんなも使います
ダウンロード:http://www.vim.org/scripts/script.php?script_id=1658
従来の方法では、cp後unzipは~/.vimでいい
vimrcに次の文を追加します.
nmap <F2> :NERDTreeToggle<CR>

後でF 2を押すと落ちるので便利です
5. taglist
taglistはctagsを利用して現在のファイルの下の関数リスト、変数などを読み取るので便利で、お勧めです
ダウンロード:http://www.vim.org/scripts/script.php?script_id=273
やはりcp後unzipは~/.vimは使えます
vimrcで加入
let Tlist_Ctags_Cmd='~/bin/ctags' //       ctags   

let Tlist_Show_One_File=1

let Tlist_OnlyWindow=1

let Tlist_Use_Right_Window=0

let Tlist_Sort_Type='name'

let Tlist_Exit_OnlyWindow=1

let Tlist_Show_Menu=1

let Tlist_Max_Submenu_Items=10

let Tlist_Max_Tag_length=20

let Tlist_Use_SingleClick=0

let Tlist_Auto_Open=0

let Tlist_Close_On_Select=0

let Tlist_File_Fold_Auto_Close=1

let Tlist_GainFocus_On_ToggleOpen=1

let Tlist_Process_File_Always=1

let Tlist_WinHeight=10

let Tlist_WinWidth=45

let Tlist_Use_Horiz_Window=0

nmap <F3> :Tlist<CR>

あとはF 3で調整できます
6. stl
vimはc++のハイライトヒントによくありません.特にstlの多くの方法と容器がハイライトされていません.見ていると憂鬱です.このときstlは役に立ちます.
ダウンロード:http://www.vim.org/scripts/script.php?script_id=2224
これがあればvimはstlをハイライトすることができます.
使用方法:
$ mkdir -p ~/.vim/after/syntax/cpp $ cp stl.vim ~/.vim/after/syntax/cpp/
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
まとめ:
もう少しで自分の今使っているものを全部紹介するところだ.
vimはとても強くて、多くのIDEより悪いわけではありません.また、環境の制約により、端末の下でしかプログラミングできない場合があり、VIMの重要性が現れる.使い終わったらすぐに開発効率を高めることができる.
現在、筆者はこのいくつかのプラグインしか使用していない.とても使いやすいと思って、もしみんながまた推薦するならば、分かち合うことができます.