読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

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

Effective Modern C++ ―C++11/14プログラムを進化させる42項目

Effective Modern C++ ―C++11/14プログラムを進化させる42項目

目次

 

はじめに

先日、

PythonとMarkdownのおすすめvim設定&プラグインを紹介したので、

最後にC++プログラムを開発する際に便利な

vim設定とプラグインを紹介したいと思います。

myenigma.hatenablog.com

myenigma.hatenablog.com

C++コードフォーマッタ clang-format

clang-formatはC, C++, Objective-C の

コードフォーマットツールです。

 

clangというAppleやGoogleが開発している

コンパイラの一部であり、

clang-formatもその一つとして開発されています。

Clang - Wikipedia

 

このツールを利用することにより、

簡単にC++のコードをフォーマットすることができます。

 

ubuntuでのインストール

apt-getを使ってバージョンを指定してインストールできます。

apt-get clang-format-3.6

 

Macでのインストール

Homebrewを使っている場合は、

下記のコマンドでOKです。

brew install clang-format

 

コマンドラインからclang-formatを使う

コマンドラインからclang-formatを下記のように使うことで、

C,C++,Object-Cのコードをフォーマットすることができます。

clang-format -style={style} [-i] {file}

-iはフォーマットしたファイルを

フォーマット後のコードで置き換えるオプションです。

styleはフォーマットのスタイルを下記の中から選ぶことができます。

{style} = LLVM, Google, Chromium, Mozilla, WebKit

 

下記はtest.cppをGoogleのフォーマットスタイルに合わせる

サンプルコマンドです。

clang-format -style=Google -i test.cpp

 

vimでclang-formatを使う

上記のようにコマンドラインから

clang-formatを使っても良いですが、

やはりvimでコードを書いている時に

フォーマットしたくなります。

 

そこで、

clang-formatのドキュメントで紹介されている

下記のvimスクリプトを.vimrcに追記することで、

visualモードでコードを選択した後、

<C-k>を押すことでコードフォーマットをするようにできます。

 

Macの場合

map <C-K> :pyf /usr/local/share/clang/clang-format.py<cr>
imap <C-K> <c-o>:pyf /usr/local/share/clang/clang-format.py<cr>

Ubuntsuの場合

"Ubuntu
map <C-K> :pyf /usr/share/vim/addons/syntax/clang-format-3.6.py<cr>
imap <C-K> <c-o>:pyf /usr/share/vim/addons/syntax/clang-format-3.6.py<cr>

これでvimでコードを書いている時に、

簡単にコードフォーマットすることができます。

 

また、下記のvimscriptをvimrcに書くと、

ファイル保存時に自動的にコードのフォーマットが実行されます。

(.h,.cppファイルのみ)

function! s:clang_format()
  let now_line = line(".")
  exec ":%! clang-format"
  exec ":" . now_line
endfunction

if executable('clang-format')
  augroup cpp_clang_format
    autocmd!
    autocmd BufWrite,FileWritePre,FileAppendPre *.h call s:clang_format()
    autocmd BufWrite,FileWritePre,FileAppendPre *.cpp call s:clang_format()
  augroup END
endif

下記の資料を参考にさせて頂きました。

 

C/C++のコード補完(vim-clang)

C/C++のコード補完をより協力にするために、

vim-clangという補完プラグインを使っています。

github.com

設定等は下記の記事を参照下さい。

 

Doxygenスタイルの関数コメントの自動挿入

DoxygenToolkitというプラグインを導入することで、

関数のコメントを自動で挿入することができます。

 

インストールはNeoBundleで一発です。

NeoBundle 'vim-scripts/DoxygenToolkit'

 

C/C++の関数の先頭行で

:Dox

とすると、

自動的にDoxygenスタイルのコメントを自動挿入してくれます。

引数や返り値なども自動で入力されるので非常に便利です。

参考資料

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

Effective Modern C++ ―C++11/14プログラムを進化させる42項目

Effective Modern C++ ―C++11/14プログラムを進化させる42項目