2014年10月5日日曜日

Sublime Text 2でC/C++のコード整形(Ubuntu 14.04 LTS)


前回の記事の続きです。前回はSublimeClangを使って補完機能と文法チェック機能を追加しました。
この記事はSublime Text 2でC/C++のコードを整形する方法を紹介します。これは長いコードを書いている際や、途中でif文やfor文の中括弧がどこにかかっているのかわからなくなってしまったときに役立ちます。
前回のSublimeClangよりも手軽に導入できるので、さっそくやってみます。

手順1

コード整形に必要なファイルをダウンロードしてきます。
まずclang-formatをダウンロードしてきます。これが今回の機能を使うための根幹になるバイナリファイルです。
LLVM Download Page
http://llvm.org/releases/download.html
Ubuntu 14.04用の物をダウンロードしてきます。
ダウンロードしてきた「clang+llvm-3.5.0-x86_64-linux-gnu-ubuntu-14.04.tar.xz」を解凍します。コード整形に必要なファイルはclang+llvm-3.5.0-x86_64-linux-gnu/bin/にあるclang-formatだけですので、これだけを解凍してもらって構いません。
解凍したclang-formatを/usr/local/binの中にコピーします。
コピーしたら確認のため、ターミナルを開いて、「clang-format -help」と入力してみてください。オプションの説明がつらつら出てきたら問題無いです。


次にSublime Text 2に導入するパッケージをダウンロードします。今回のパッケージはPackage Controlにはありませんので直接ダウンロードしてきます。

https://llvm.org/svn/llvm-project/cfe/trunk/tools/clang-format/clang-format-sublime.py
これを~/.config/sublime-text-2/Packages/Userにコピーします。

手順2

Sublime Text 2を起動してキーボードショートカットを追加します。メニューから「Preferences」→「Key Bindings - User」を選択します。そして次の一行を追加してください。すでに何かのショートカットを追加している場合、追加する行の前の文章のあとにコンマを打ち忘れないように。
{ "keys": ["ctrl+shift+c"], "command": "clang_format" } 

使い方

今までどおり、コードを書いてコードを整形したい箇所を選択してください。すべてについて整形したい場合は「Ctrl+A」で全選択します。そしてそのあと先ほど設定したショートカット「Ctrl+Shift+C」で整形します。大げさに汚くしたコードを整形した結果を下に示します。


インデントが綺麗になっているのはもちろん、変数と変数の間に空白がひとつ打たれたり(プログラムの5行目)、12行目にかけての不自然なcoutの改行など色々修正してくれています。

更に極める

今の状態でも十分な気がしますが、プログラムが綺麗だと感じる書き方はひとそれぞれなはず。上の例だとwhileとあとの条件文を書くカッコとの間に空白はいらないな。とか
これを細かく設定することができます。
ホームディレクトリに「.clang-format」の名前で設定ファイルを作成します。
設定については下記のサイトを参考にしてください。
ClangFormatスタイルオプション
http://algo13.net/clang/clang-format-style-oputions.html
サイトに書いてあるBasedOnStyle:をLLVM、google、Chromium、Mozilla、WebKitのいずれかにするだけで大体のスタイルを決定できます。
これを「.clang-format」に一行ずつ記述していきます。
先ほどのサイトにはそれぞれのオプションを1つずつ指定できるような設定項目が記載されてますので、これを参考に自分のスタイルにフィットするように調整してください。


まとめ

2つ記事にわたってSublime Text 2のC/C++の開発環境を整える設定方法を書きました。
確かに設定は面倒ですが、もしかしたら開発の進捗に大きく差がでるかもしれません。
私はこれらの設定方法を確立するのにかなりの時間を費やしてしまいましたので、そういった意味では卒研の進捗に大きな差が出てしまったかもしれません。

Sublime Text 2は標準でも十分に便利な機能がたくさん搭載されていますが、さらに魅力的な機能を追加することができるのがいいですね。情報はemacsより少ないですが。
また便利なパッケージがありましたら紹介したいと思います。

0 件のコメント:

コメントを投稿