linux プログラミング

【Linux】vimでファイル末尾の改行コードを保存しない方法

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
  • この記事を書いた人

Usagi

▶︎ 新米エンジニア ▶︎ Usagi Blog 運営 ▶︎ 関西在住 ● 主にプログラミングについての学びを発信中

-linux, プログラミング