WindowsでgVimを使用しています。コードの行末に^M
文字が表示されます。 :set ff=dos
を使用しましたが、役に立ちませんでした。 ^M
文字は既存の行に残りますが、入力した改行には表示されません。モードをmac(^J
文字を表示)とunix(^M
文字も表示)に切り替え、dosに戻りました。他の誰かがこれを見ましたか?
これは、Windowsの行末とUnixの行末が混在している場合に発生します。 100行あり、99が\ r\nで、1行が\ nの場合、99 ^ M文字が表示されます。修正方法は、その1行を見つけて置き換えることです。または、ファイルに対してdos2unixを実行します。 Windowsの行末を次のように置き換えることができます。
:%s/\r\(\n\)/\1/g
私は通常、行末をクリーンアップするために次を使用します。
:g/^M$/s///
Ctrl-Mを取得するには、通常ctrl-Qと入力し、次にctrl-Mと入力します(環境によってはctrl-Vとctrl-Mの場合があります)。理由はわかりませんが、 rq よりも覚えやすいものです。
忘れずに:set ff=dos
も同様です。そうしないと、UNIXの行末でまだ保存されてしまいます。
私はこれがすでに回答されていることを知っていますが、私が使用するトリックは
:%s/\r/\r/g
これにより、UNIXのキャリッジリターンがウィンドウCRLFに置き換えられます。他の誰かが問題を抱えている場合に備えて追加しました。
これらの文字は無視できます!
これをvimrcに入れて
無視/\r $ /
実際に私にとってうまくいったのは(64ビットWindows、gVIM:7.2で):
:set ffs=dos
だけでなく:ff
Windows 7でVim 7.3を実行しています。次のコマンドを使用しました。
:%s/^M/\r/g
^ Mを作成するには、CTRL + Q、次にCTRL + Mと入力しました。
これはおそらくあなたの多くにとっては少し簡単ですが、偶然にも便利です。
Richqの答えに基づいて、これらは私のvimrcで役立つことがわかりました。 Vimはマップされたexコマンドである場合、Vimは別のキーストロークが動作するのを待つため、2番目のコマンドはddを少し混乱させるため、通常はコメントアウトされています。
関数! D2u() execute '%s/\ r \(\ n \)/\1/g' endfunction "map d2u:%s/\ r \(\ n \)/\1/g
1つ目はexにcall D2u()
と入力して実行され、2つ目は編集モードでD2u
を押して実行されます。
これらは通常、UNIX/DOS混合システムでファイルを使用しているため、余分なCR行の終わりです。
各行の末尾から^ Mを1つ削除する最短の回答と、私が使用するものは次のとおりです。
:%s/\r
次と同等です:
:%s/\r//
ただし、最後のスラッシュは必要ありません(想定されています)。
多くのことを試してみましたが、以下はうまくいきました
:%s/\r/\r/g
注:ファイル全体に効果が必要な場合はgを使用します