vimでC++コーディングする際のおすすめ設定

※後日、編集するとして、まずは殴り書きで作成

最近まで、統合開発環境(VisualStudio)でコーディング&試験していたので、

Linux上での vim+gcc+gdbでのC++開発が結構辛い。。。

 

まずは、少しでも楽になるように、調べたものを記載する。

■■■vim

vim-clang

  ⇒構造体やクラスの変数・IFのコード補完

     注意点はなぜか「set paste」とは共存が出来ない模様。。。

  ・GitHubの以下のURLからclang.vimを取得する。

      https://github.com/justmao945/vim-clang/tree/master/plugin

   ・ホームディレクトリの.vim/pluginディレクトリに配置する。

 ・同フォルダ以外のヘッダを読み込む場合は

       .clangファイルを作成して、参照先のヘッダフォルダパスを記載する

■Tagbar

VimをIDEっぽく(主にC++/Java用)整える

   「:TagbarToggle」で切り替える

 

■SrcExpl

  ⇒関数の定義先ソースを別画面に表示

   https://github.com/wesleyche/SrcExpl

   ctagsを利用するSource Explorer(srcexpl.vim)がすごく便利 - Guyon Diary

   VimをIDEっぽく(主にC++/Java用)整える

      :ScrExplToggleで表示/非表示をトグル。 

■2重インクルード防止定義追加

  ※ファイル名で自動追加

 カレントファイルにインクルードガードを書き込むvimスクリプト

==================================================

"----------------------------------------------------
" Insert include guard to the current file
"----------------------------------------------------
command! -nargs=0 IncGuard call IncludeGuard()
function! IncludeGuard()
"カレントファイル名を取得
let name = fnamemodify(expand('%'),':t')

"大文字にする
let name = toupper(name)

"がーど
let included = '_'.substitute(name,'\.','_','g').'_INCLUDED_'

"書き込み
let res_head = '#ifndef '.included."\n#define ".included."\n\n"
let res_foot = "\n".'#endif //'.included."\n"
silent! execute '1s/^/\=res_head'
silent! execute '$s/$/\=res_foot'
endfunction

==================================================

   

 

=================================== 

"#読み込むcatgを指定する。、ctagファイルが存在するフォルダ以外で
"#ファイルを開いても"適応される
set tags=tags;

"#いい感じにインデントしてくれる
set cindent

" #ファイル保存前に別ファイルを開ける
set hidden

"#tabの可視化
set list
set listchars=tab:≫-,trail:-

" #全角スペース・行末のスペース・タブの可視化
if has("syntax")
syntax on
-
" PODバグ対策
syn sync fromstart
-
function! ActivateInvisibleIndicator()
" 下の行の" "は全角スペース
syntax match InvisibleJISX0208Space " " display containedin=ALL
highlight InvisibleJISX0208Space term=underline ctermbg=Blue guibg=darkgray gui=underline
"syntax match InvisibleTrailedSpace "[ \t]\+$" display containedin=ALL
"highlight InvisibleTrailedSpace term=underline ctermbg=Red guibg=NONE gui=undercurl guisp=darkorange
"syntax match InvisibleTab "\t" display containedin=ALL
"highlight InvisibleTab term=underline ctermbg=white gui=undercurl guisp=darkslategray
endfunction
-
augroup invisible
autocmd! invisible
autocmd BufNew,BufRead * call ActivateInvisibleIndicator()
augroup END
endif

 "#########ここからプラグイン

"# SrcExpl
let g:SrcExpl_RefreshTime = 1

"# tagbar
"let g:tagbar_width = 20
"let g:tagbar_autoshowtag = 1
":TagbarShowTag を叩かなくても有効にする

 "#vim-clang

"#

"let g:clang_c_options = '-std=c11'
"let g:clang_cpp_options = '-std=c++1z -stdlib=libc++ ?pedantic-errors'
"let g:clang_cpp_options = '-std=c++1y'
"let g:clang_format_auto = 1
"let g:clang_format_style = 'Google'
let g:clang_check_syntax_auto = 1

=================================== 

 

 

 参考サイト)

 

■■■GDB

  ■gdbのTUIモードを使用する

    IDEのように、画面上部に現在実行中のソースファイルを表示してくれる凄いやつ。

    gdb起動後、CTRL+x、CTRL+aでTUIモードに移行する。

 

 

 

参考サイト)

Vim幼稚園からVim小学校へ   

vimgrepとQuickfix知らないVimmerはちょっとこっち来い

vimの便利なPlugin(その16)vim-clang | 技術者魂

C++用おすすめvim設定&プラグイン - MyEnigma

vim doxygen コメント挿入 | ZQhDb,pbnDP

脱初心者を目指すVimmerにオススメしたいVimプラグインや.vimrcの設定

Safx: cgdbとgdbのTUIモードでGoのコンソールデバッグをしてみる

gdb tui コマンド - のねのBlog

カレントファイルにインクルードガードを書き込むvimスクリプト

vimに自作コマンドを実装する