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
「:TagbarToggle」で切り替える
■SrcExpl
⇒関数の定義先ソースを別画面に表示
https://github.com/wesleyche/SrcExpl
ctagsを利用するSource Explorer(srcexpl.vim)がすごく便利 - Guyon Diary
: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モードに移行する。
参考サイト)
vimgrepとQuickfix知らないVimmerはちょっとこっち来い
vimの便利なPlugin(その16)vim-clang | 技術者魂
C++用おすすめvim設定&プラグイン - MyEnigma
vim doxygen コメント挿入 | ZQhDb,pbnDP
脱初心者を目指すVimmerにオススメしたいVimプラグインや.vimrcの設定
Safx: cgdbとgdbのTUIモードでGoのコンソールデバッグをしてみる