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

MyEnigma

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

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

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のコードをフォーマットすることができます。

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

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

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

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

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

 

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

サンプルコマンドです。

lang-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でコードを書いている時に、

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

 

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項目