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