vim-clang-formatを入れよう
個人開発で使っていたObjective-Cのコードがコーディング規約なんてあったもんじゃないレベルの汚さだったのでフォーマットしたい!
だけど、Xcodeはフォーマッターがなくてインデントしか揃えてくれない。どうすれば・・・。
そうだ!もしかしたらViimのプラグインにあったりするんじゃ・・・あったよ!
使うっきゃねぇ!
ということで入れました。MacVimとvim-clang-format。
MacVimを導入
macvim-kaoriyaのリポジトリからリリース版の最新dmgをダウンロードしてきて、applicationフォルダにぶち込む。
dein.vimの導入
実は初めてのプラグイン導入でドキドキ。
参考サイトを見てるとダークパワーとかいっぱい書いてあったから危ないやつかと思って最初躊躇した。
MacVimと同じくdein.vimのリポジトリを参考にインストール。
英語苦手だからっていってちゃんと説明見ないとどこかで引っかかるので注意する。
たとえば
Note: {directory} is just placeholder.
波括弧で囲まれている部分はディレクトリを指すので対応したディレクトリをちゃんと指定してあげること。
コーテーションがいるとかいらないとかはどこかでエラーが発生するのでやってない方を試せばいずれ当たる。そこは大した問題ではない。
3まで終わらせればdein.vim自体のインストールは終了。
clang-formatのインストール
Homebrewを使ってインストールするので、公式サイトを参考にインストールする。
これに関しては数多に解説があるので迷ったら調べる。
Homebrewがインストールできたら
brew install clang-format
でclang-formatをインストールする。
おそらくclangも同時にインストール・アップデートした方が良いんだろうけど、一応Macに入ってることとリポジトリの追加設定が必要だったのが面倒でパス。
vim-clang-formatのインストール
ようやく最終目的vim-clang-formatのインストール。
ここで先ほどインストールしたdein.vimの出番。
vim-clang-formatに必要な2つのプラグインをインストールする。
必要なのは
vim-operator-user(highly recommended) vimproc.vim(recommended in Windows)
の2つ。
当然vim-clang-formatも必要になるので計3つ。
これらをdein.vimを使ってインストールする。
インストール方法は.vimrcに
call dein#add('rhysd/vim-clang-format') call dein#add('kana/vim-operator-user') call dein#add('shougo/vimproc.vim', {'build" : 'make'})
を入力してdein.vimを使ってインストールするだけ。
あとはおなじみvim-clang-formatのリポジトリでvimで使う時用の設定をしてあげればOK。
うまくかいつまんで設定してあげると、':w'で保存するときに自動でフォーマットが効くようになります。
この辺に関して一番詳しく解説したかったけど、ここが一番分からなくて真似しただけになってしまってる。 参考にしたのはこちらのサイト
既知の問題
インストールはできて、これで一応フォーマットできるようになったものの独自設定が効かない。
これはvim-clang-formatでもclang-formatでも同じ現象。
ここを参考に、
clang-format -style=Google -dump-config > .clang-format
として、
clang-format -i -style=file hoge.m
とすると
Configuration file(s) do(es) not support Objective-C: /.../.clang-format
と表示されフォーマットできない問題が発生している。
出したままで一切いじってないにも関わらずこうなる。
ちなみに、clang-format -i -style=Google hoge.m
とすると問題なくフォーマットできる。不思議。
おわりに
というわけで、MacVimのインストールとvim-clang-formatのインストールでした。
今回Macでの導入方法を書きましたが、ClangFormat自体はMacでなくても導入できるので、
Windowsにも導入しておけば「このコード汚ねぇ」ってなった時でもWindowsからフォーマットかけられるので安心ですね。
次はSwiftのフォーマッターを入れたいので、実行できたら再度記事にする予定です。