行末でvimや他のエディターを使用してソースファイルを編集しているときに、各行の末尾にこれらの^ M文字が表示されることがあります。私はそれがWindowsで、そして次にLinuxでファイルを編集することと関係があると思います。これらをすべて自動的に削除するにはどうすればよいですか?
コマンドとして、次を入力します
:%s/^M$//
(^ Mを取得するには、^ V ^ Mを押します。^はほとんどのキーボードでCTRLです)
DOS行末を取り除く簡単な方法の1つは、ff
オプションを使用することです。
:set ff=unix
:wq
これで、ファイルは古き良きUnix-wayに戻りました。
追加 DOSの行末(プリンターを幸せに保つため、または素敵なツールを持っていないWindowsの友達とファイルを転送するため)をしたい場合は、簡単に反対方向に進むことができます:
:set ff=dos
:wq
あなたはこれを行うことができます:
:set fileformats=dos
ファイルに触れることなく、^M
を非表示にします。
dos2unix と呼ばれるプログラムがあり、それらはあなたのためにそれらを取り除くはずです。 Windowsは異なる行末文字を使用しているため、これが発生します。
これは、1行にすべてが含まれるファイルで機能しました。
最初にすべての一致を見つける
:%s/^M//
(取得するため ^M
、^ V ^ Mを押します。ここで^は Ctrl ほとんどのキーボードで)
次に、改行に置き換えます
:%s//\r/g
組み合わせたコマンドは次のとおりです。
:%s/^M/\r/g
私は、それらを再び開く前に、fromdos
に苦しめられたファイルを実行する傾向があります。 fromdos
は tofrodos パッケージの一部です。
問題の原因はFTP転送によるものである可能性があります。これらのファイルを1つのボックスから別のボックスにFTP転送するときは、ASCII転送。コマンド「ASC」を使用してください。
" 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()
mcedit:shift + f2、Unix形式(LF)を設定、OK