vim
viでテキストファイルをDOSからUNIXに変換する
サーチ…
備考
^M
文字は、Vim( <cm>
または単に<CR>
)にキャリッジリターンを表します。ファイル内の少なくともオンラインの行がLF
行の終わりを使用している場合、Vimはこの文字を表示します。言い換えれば、Vimがfileformat=unix
を持つファイルを考えているが、一部の行にキャリッジリターン( CR
)がある場合、キャリッジリターンは^M
として表示されます。
LF
行の終わりが1行で、 CRLF
行の終わりが複数行あるファイルは、MSDOSベースのシステムで作成されたファイルを誤って編集することによって作成されることがよくあります。たとえば、MSDOSオペレーティングシステムの下にファイルを作成し、それをUNIXベースのシステムにコピーし、UNIXベースのオペレーティングシステム上のツールを使用してハッシュバングを付けます(例: #!/bin/sh
)。
DOSテキストファイルをUNIXテキストファイルに変換する
非常に頻繁にDOSやWindowsで編集されたファイルを持っていて、それをUNIXで表示しています。 viを使用してファイルを表示すると、次のようになります。
First line of file^M
Next Line^M
And another^M
^ Mを削除したい場合は、各^ Mを手作業で削除することができます。あるいは、 Escキーを押した後のviでは、コマンドモードプロンプトで次のように入力できます。
:1,$s/^M//g
^ Mは、 Ctrlとvを一緒に入力し、次にCtrlとmを押しながら入力します。
これは最初の行 '1'から最後の行 '$'までコマンドを実行し、コマンドは '^ M'を何も ''と置き換え、これをグローバルに 'g'に置き換えます。
VImのファイル形式の使用
Vimが<CR><NL>
行末(MSDOSベースのオペレーティングシステムで共通、 CRLF
とも呼ばれる)のファイルを開くと、 fileformat
がdos
に設定されます。
:set fileformat?
fileformat=dos
あるいは単に
:set ff?
fileformat=dos
これを<NL>
行末(ほとんどのUNIXベースのオペレーティングシステムではLF
とも呼ばれます)に変換するには、 fileformat
設定を変更することができ、Vimはバッファを変更します。
:set ff=unix