メモの日々


2021年07月15日(木) [長年日記]

[vim] ファイル末尾の改行を削除する

デフォルトの設定だとVimはファイルの末尾に改行を付与する。この改行を削除しようとしたがなかなかうまくいかなかったのでメモ。

ファイル末尾の改行を削除する方法

:set nofixeol noeol

とすればよい。

eolオプションはファイル末尾に改行が付いているかどうかを表すオプション。ファイル読み込み時にeolかnoeolかが自動的にセットされる。 noeolをセットして保存するだけでファイル末尾の改行が削除されればわかりやすいが、デフォルトの設定ではそうはならない。eolオプションの状態を保存時に反映するにはfixeolオプションをオフにする必要がある。

fixeolオプションはバージョン7.4.785で追加されたもののようだ。

vim-jpの上のissue(とても長い)を見ていて存在を知った。

binaryオプションを使うのはうまくいかないケースがある

検索するとbinaryオプションをnoeolと同時に設定する方法がよくみつかるのではじめはこの方法を使っていた。

しかし、この方法だと

  • ファイルの改行コードがLFに変わってしまう
  • ファイルのBomが削除されてしまう

という問題があった。

binaryではなくnofixeolを使う方がいい。