windowsの環境で編集したファイルをサーバーにアップして、サーバー上でvim で開いたとき、文末に ^M が表示されることがあります。
これは、windowsの標準改行コードが、\r\n の2文字になっていることが原因です。
サーバーに多いunix系のOSは、改行コードは\n 一文字のため、vim では設定をいじっていないと区別して表示されるようになってます。
表示を消したいだけであれば、
1 |
:e ++ff=dos |
にすれば良いですが、混在してたり、修正したい場合は、置換しましょう。
ちなみに表示をdosに変えてしまった場合、^M が復活するように、
1 |
:e ++ff=unix |
と戻しておきましょう。
下図は、windowsのパソコンで編集したphpファイルをサーバーにアップしてから、vim で編集したため、改行コードが混ざってます。
下図がファイル例ですが、^M の表示がある部分が、windows用の改行コードになっています。
vimで改行コードを置換する方法
vimでの置換するコマンド
:s を使います。以下のようにすると、カーソルのある行で、1回だけ置換されます。
1 |
:s/置換したい文字列/置換後の文字列/ |
以下のようにgオプションを付けると、カーソル行で、全て置換されます。
1 |
:s/置換したい文字列/置換後の文字列/g |
また、ファイル全体を置換したい場合は、
1 |
:%s/置換したい文字列/置換後の文字列/ |
のように、sの代わりに%sを使用します。上記はgがないため、1行に1回だけの変換になりますので、ファイル全体の全箇所で置換したい場合は、
1 |
:%s/置換したい文字列/置換後の文字列/g |
と、gオプション付けます。
^M(=\r)を削除するには
その場合、下のコマンドにおいて、
1 |
:%s/置換したい文字列/置換後の文字列/g |
置換前文字列 = \r、置換後文字列 = なし
となるため、
1 |
:%s/\r//g |
とすれば置換できます。
置換後のファイル
冒頭に示したファイルに、:%s/\r//g のコマンドを実行すると、下図のように^Mの表示が消えます。
まとめ
vimでwindows用の改行コード^M(\r) を削除するためには、以下のコマンドを実行します。
1 |
:%s/\r//g |
ファイル全体で、\rを削除するという意味です。
コメント