覚えたら書く

IT関係のデベロッパとして日々覚えたことを書き残したいです。twitter: @yyoshikaw

vimでの改行コードの可視化

今回のエントリは、MacOS環境で試してますので、Linux環境だと挙動が違うところある可能性があります


vimでファイル触っているということは大概の場合において、行末尾の改行コードが LF なわけですけど。
WIndowsで作成したテキストファイルを作成すると 改行コードは CR+LF です。

場合によって、改行コードの LF と CR+LF が混在したファイルができていたりします。


vimで対象ファイルの改行コードを可視化する場合、以下を実行します

:set list


改行コードがLFの場合は、以下のように表示されます。($ が LF を意味しています)

aaaaaaa$
bbbbbbb$
ccccccc$
aaaaaaa$
aaaaaa$
1234567$
8901111$


行末尾が CR+LF だと以下のように表示されます。(^M1がCR, $ が LF, を意味しています)

aaaaaaa^M$
bbbbbbb^M$
ccccccc^M$
aaaaaaa^M$
aaaaaa^M$
1234567^M$
8901111^M$


改行コードに LF と CR+LF が混在していると以下のように表示されます。

aaaaaaa^M$
bbbbbbb^M$
ccccccc^M$
aaaaaaa^M$
aaaaaa^M$
1234567^M$
8901111^M$
^M$
^M$
abcdefg$
hijklmn$
opqr$


そもそも CR+LF のファイルであれば ^M は最初から表示されているはずです。

もし表示されていないようであれば以下を実行します

:edit ++ff=unix


ちなみに、fileコマンドで改行コードが CR+LF のファイルを確認すると以下のようになります。

$ file sample.txt 
sample.txt: ASCII text, with CRLF line terminators


fileコマンドで改行コードに LF と CR+LF が混在しているファイルを確認すると以下のようになります。

$ file sample3.txt 
sample3.txt: ASCII text, with CRLF, LF line terminators


というわけで、改行コードを可視化できたのでこれで良しです。
(普通は改行コードを変換するところまで書くのがワンセットな気がしますが笑)