PHP の PSR-2 で「最終行に空行を入れる」という規約がある。
All PHP files MUST end with a single blank line.
この規約に従っていたつもりなんだけど、勘違いしていたことがわかった1ので備忘。
UNIXの行の定義とviの改行コード | Firegoby より引用
POSIXでは「Unix においてテキストファイルとは行の集合であり、行とは改行文字で終わるものと定義される」と定義されている。
viのような由緒正しきテキストエディターは、この定義を忠実に守っており、行末には必ず改行が入る仕様になっている。
このため Vim で最終行に 空行が見える ように記述している場合、最終行に改行が連続(LFLF)して入力されている。
GitHub でも最終行の空行は表示されない2。PSR-2 の規約を満たしていても、Vim と GitHub では空行が見えないため、空行を連続して入力してしまっていた。
ということで PSR-2 に従う場合、Vim では最終行の 空行が見えない状態が正解 のようだ。