vimコマンドでファイル編集を行うとデフォルトで末尾に改行が挿入される。
たとえばvimコマンドで「sample」と入力したファイルを8進数でダンプ表示すると改行コード\n
が挿入されていることが確認できる。
% od -c sample.txt
0000000 s a m p l e \n
0000007
VSCodeなどのエディタでは差分がないように見えて意図しない差分が発生しており、何気に厄介です。
改行コードが入らないよう設定をする
コマンドモードの状態で以下のvimコマンドを実行します。
なお、インサートモードから抜けてコマンドモードに移行するにはESC
キーを押します。
// バイナリモードに移行
:set binary
// 改行の挿入を解除
:set noeol
コマンドは1行にまとめることもできます。
:set binary noeol
改行が挿入されないことを確認
適当にファイルを作成します。
% vi sample.txt
インサートモードに移行する前に改行挿入を解除します。
:set binary noeol
I
キーでインサートモードに移行し適当にテキストを入力します。
sample
~
~
~
"sample.txt" [noeol] 1L, 6B
ESC
キーでコマンドモードに移行し:wq
で保存します。
8進数でダンプ表示すると改行コードが挿入されていないことが確認できます。
% od -c sample.txt
0000000 s a m p l e
0000006