vi でファイルの行末の ^M を削除する方法

vi でファイルの行末の ^M を削除する方法

Linux で vi エディタ等でファイルを開くと ^M という記号が表示される場合があります。Linux では、この文字は不要ですので削除しましょう。




^M が表示される原因

Windows でファイルを作成・編集した場合、改行コードが CR+LF となります。このファイルをファイル転送ソフト(FTP や SCP)のバイナリモードで転送すると、改行コードはそのまま CR+LF となります。

他のファイル転送モードでは自動的に改行コードを変換してくれるのですが、バイナリモードでは改行コードの変換が行われません。

しかし Linux における改行コードは LF ですので、Linux で改行コードが CR+LF となっているファイルを vi エディタで開くと行末に ^M と表示されてしまいます。つまり CR が別の文字として解釈されているわけです。このような場合、Linux 上の vi エディタで改行コードを変換してあげると良いです。


vim で ^M を変換する

以下のように %s で置換モードに入り、/^M/ で ^M を // で空文字に変換する命令を入力すると ^M が削除されます。
%s/^M//g

そして変換後にファイルを保存すれば ^M は削除されます。