My Favorite Formatters
テキストで書くプログラミング言語では、どれもソースコードにはある程度の任意性があり、プログラムとしては同じ意味でも、テキストとしては異なるものが書けてしまう。 そうすると内容自体を比較するのが難しくなってしまう。 そこでこの任意性、つまり形式(フォーマット)を自動で統一するツール、フォーマッタがあると便利だ。 そういうわけで、どのプログラミング言語にもフォーマッタが作られている。
ところが、プログラミング言語によっては、公式のフォーマッタが宣言されてないために、複数の異なるフォーマッタが作られている場合がある。 形式を統一するのが目的のフォーマッタが複数あるのは問題だ。 とはいえ、それぞれ使い勝手が違って、それぞれ良い面があったりするので、悩ましい。 そういう場合は、プロジェクト単位でどのフォーマッタを使うか決めることになる。
ここでは、私が個人的に使っている、各プログラミング言語のフォーマッタを載せておく。
次の点を考慮して選んでいる。
以下でそれぞれについてもう少し詳しく述べる。 microのプラグインfmtonsave🔗での設定方法も載せる。
LuaのフォーマッタはStyLua🔗を選んだ。
Rustで作られている。 Debianパッケージには無いが、Rustがあれば cargo install
stylua
でインストールできる。
fmtonsave
で設定する場合は setfmtonsave stylua
とする。
PythonのフォーマッタはBlack🔗を選んだ。 Pythonで作られている。
Debianパッケージにあり、 apt-get install black
でインストールできる。
fmtonsave
で設定する場合は setfmtonsave black
とする。
HTMLのフォーマッタはTidy🔗を選んだ。
Cで作られている。 Debianパッケージにあり、 apt-get install tidy
でインストールできる。
fmtonsave
で設定する場合は setfmtonsave tidy
-m
とする。 オプションの -m
は上書き保存だ。
JavaScriptのフォーマッタはjs-beautify🔗を選んだ。
Pythonで作られている。 Debianパッケージにあり、 apt-get install
jsbeautifier
でインストールできる。
fmtonsave
で設定する場合は setfmtonsave
js-beautify-py -r -n -t
とする。 オプションの -r
は上書き保存、
-n
はファイルの最後に改行を付ける、 -t
はインデントをタブにするものだ。
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のフォーマッタはshfmt🔗を選んだ。
Goで作られている。 Debianパッケージにあり、 apt-get install shfmt
でインストールできる。
fmtonsave
で設定する場合は setfmtonsave shfmt
-w
とする。 オプションの -w
は上書き保存だ。
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
は上書き保存だが、バックアップファイルを作ってしまうので、スクリプトの中で削除した。
(続く。)