web-dev-qa-db-ja.com

vimのすべての行の末尾に^ M

行末でvimや他のエディターを使用してソースファイルを編集しているときに、各行の末尾にこれらの^ M文字が表示されることがあります。私はそれがWindowsで、そして次にLinuxでファイルを編集することと関係があると思います。これらをすべて自動的に削除するにはどうすればよいですか?

125
DHamrick

コマンドとして、次を入力します

:%s/^M$//

(^ Mを取得するには、^ V ^ Mを押します。^はほとんどのキーボードでCTRLです)

126
Tobias Baaz

DOS行末を取り除く簡単な方法の1つは、ffオプションを使用することです。

:set ff=unix
:wq

これで、ファイルは古き良きUnix-wayに戻りました。

追加 DOSの行末(プリンターを幸せに保つため、または素敵なツールを持っていないWindowsの友達とファイルを転送するため)をしたい場合は、簡単に反対方向に進むことができます:

:set ff=dos
:wq
83
sarnold

あなたはこれを行うことができます:

:set fileformats=dos

ファイルに触れることなく、^Mを非表示にします。

33
jqno

dos2unix と呼ばれるプログラムがあり、それらはあなたのためにそれらを取り除くはずです。 Windowsは異なる行末文字を使用しているため、これが発生します。

17
Adam Lassek

これは、1行にすべてが含まれるファイルで機能しました。

最初にすべての一致を見つける

:%s/^M//

(取得するため ^M、^ V ^ Mを押します。ここで^は Ctrl ほとんどのキーボードで)

次に、改行に置き換えます

:%s//\r/g

組み合わせたコマンドは次のとおりです。

:%s/^M/\r/g
6
TheRealKingK

私は、それらを再び開く前に、fromdosに苦しめられたファイルを実行する傾向があります。 fromdostofrodos パッケージの一部です。

2
Ted Percival

問題の原因はFTP転送によるものである可能性があります。これらのファイルを1つのボックスから別のボックスにFTP転送するときは、ASCII転送。コマンド「ASC」を使用してください。

1
Spencer Ruport
" put this in your ~/.vimrc file and :source ~/.vimrc
" then you can do: Dos2Unix
" dos2unix ^M
fun! Dos2unixFunction()
    let _s=@/
    let l = line(".")
    let c = col(".")
    try
        set ff=unix
        w!
        "%s/\%x0d$//e
    catch /E32:/
        echo "Sorry, first save the file."
    endtry
    let @/=_s
    call cursor(l, c)
endfun
com! Dos2Unix keepjumps call Dos2unixFunction()
0
SergioAraujo

mcedit:shift + f2、Unix形式(LF)を設定、OK

0
Vasily Chapaev