かれは開発室 - Kareha Hub

お気に入りのフォーマッタたち

My Favorite Formatters

テキストで書くプログラミング言語では、どれもソースコードにはある程度の任意性があり、プログラムとしては同じ意味でも、テキストとしては異なるものが書けてしまう。 そうすると内容自体を比較するのが難しくなってしまう。 そこでこの任意性、つまり形式(フォーマット)を自動で統一するツール、フォーマッタがあると便利だ。 そういうわけで、どのプログラミング言語にもフォーマッタが作られている。

ところが、プログラミング言語によっては、公式のフォーマッタが宣言されてないために、複数の異なるフォーマッタが作られている場合がある。 形式を統一するのが目的のフォーマッタが複数あるのは問題だ。 とはいえ、それぞれ使い勝手が違って、それぞれ良い面があったりするので、悩ましい。 そういう場合は、プロジェクト単位でどのフォーマッタを使うか決めることになる。

ここでは、私が個人的に使っている、各プログラミング言語のフォーマッタを載せておく。

次の点を考慮して選んでいる。

以下でそれぞれについてもう少し詳しく述べる。 microのプラグインfmtonsave🔗での設定方法も載せる。

Lua

LuaのフォーマッタはStyLua🔗を選んだ。 Rustで作られている。 Debianパッケージには無いが、Rustがあれば cargo install stylua でインストールできる。

fmtonsave で設定する場合は setfmtonsave stylua とする。

Python

PythonのフォーマッタはBlack🔗を選んだ。 Pythonで作られている。 Debianパッケージにあり、 apt-get install black でインストールできる。

fmtonsave で設定する場合は setfmtonsave black とする。

HTML

HTMLのフォーマッタはTidy🔗を選んだ。 Cで作られている。 Debianパッケージにあり、 apt-get install tidy でインストールできる。

fmtonsave で設定する場合は setfmtonsave tidy -m とする。 オプションの -m は上書き保存だ。

JavaScript

JavaScriptのフォーマッタはjs-beautify🔗を選んだ。 Pythonで作られている。 Debianパッケージにあり、 apt-get install jsbeautifier でインストールできる。

fmtonsave で設定する場合は setfmtonsave js-beautify-py -r -n -t とする。 オプションの -r は上書き保存、 -n はファイルの最後に改行を付ける、 -t はインデントをタブにするものだ。

CSS

CSSのフォーマッタはCSSTidy🔗を選んだ。 C++で作られている。 Debianパッケージにあり、 apt-get install csstidy でインストールできる。

fmtonsave で設定する場合は setfmtonsave csstidy-in-place とする。 csstidy-in-place は自作のシェルスクリプトで、次のようなもの。

#!/bin/sh
csstidy $1 /tmp/$1 && echo >> /tmp/$1 && mv /tmp/$1 $1

csstidy には上書き保存のオプションが無いので、このようなものを自作する必要があった。 さらに、 csstidy はファイルの最後に改行を付けてくれないので、スクリプトの中で付けた。

sh

shのフォーマッタはshfmt🔗を選んだ。 Goで作られている。 Debianパッケージにあり、 apt-get install shfmt でインストールできる。

fmtonsave で設定する場合は setfmtonsave shfmt -w とする。 オプションの -w は上書き保存だ。

Perl

PerlのフォーマッタはPerltidy🔗を選んだ。 Perlで作られている。 Debianパッケージにあり、 apt-get install perltidy でインストールできる。

fmtonsave で設定する場合は setfmtonsave perltidy-in-place とする。 perltidy-in-place は自作のシェルスクリプトで、次のようなもの。

#!/bin/sh
perltidy -b $1
rm "$1.bak"

オプションの -b は上書き保存だが、バックアップファイルを作ってしまうので、スクリプトの中で削除した。

(続く。)