Vimrcに^M
という文字が表示され続けますが、設定が壊れます。
Unixは改行文字に0xAを使います。 Windowsは2つの文字の組み合わせを使用します。0xD 0xA。 0xDはキャリッジリターン文字です。 ^M
はたまたまvimが0xDを表示する方法です(0x0D = 13、Mは英語のアルファベットの13文字目です)。
次のコマンドを実行すると、すべての^M
文字を削除できます。
:%s/^M//g
^M
を押したままにする場所 Ctrl とタイピング v に続く mそして解放する Ctrl。これは^V^M
と省略されることがありますが、文字どおりに入力するのではなく、前の文の説明に従って入力する必要があります。
この式は、すべての^M
を空の文字列に置き換えます(つまり、何もしません)。私はこれを使用して、WindowsからUnix(Solaris、Linux、OSX)にコピーされたファイルの^M
を取り除きます。
:%s/\r//g
今日私のために働いた。しかし、私の状況は少し違うかもしれません。
新しい行を削除せずに翻訳するには
:%s/\r/\r/g
それはおそらくあなたがキャリッジリターンを持っていることを意味します(異なるオペレーティングシステムは行末を知らせるために異なる方法を使用します)。
dos2unix
を使ってファイルを修正するか、vimでファイルフォーマットを設定します。
set ffs=unix,dos
あなたのテキストファイルが - file.txtであるとしましょう、そしてこのコマンドを実行します -
dos2unix file.txt
テキストファイルをdosからunixフォーマットに変換します。
Unixでは、おそらく 'tr'コマンドを使うほうが簡単です。
cat file1.txt | tr "\r" "\n" > file2.txt
私はそれらをすべてsedで削除しました。
sed -i -e 's/\r//g'
別の文字列や文字に置き換えることもできます。
sed -i -e 's/\r/string/g'
私はもともとWindowsマシン上でMacユーザーによって生成されたテキストファイルを手に入れ、load data
コマンドを使用してそれをLinux MySQL DBにインポートする必要がありました。
VIMには '^ M'という文字が表示されていましたが、上記のどれも私の特定の問題に対しては機能しませんでしたが、データはインポートされますが常に何らかの方法で破損しました。解決策は結局はかなり簡単でした(多くのフラストレーションの後)。
解決策:同じファイルに対してdos2unix
_を2回_ を実行するとうまくいきます。 file
コマンドを使用すると、その過程で何が起こっているのかがわかります。
$ file 'file.txt'
file.txt: ASCII text, with CRLF, CR line terminators
$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text, with CRLF line terminators
$ dos2unix 'file.txt'
dos2unix: converting file file.txt to UNIX format ...
$ file 'file.txt'
file.txt: ASCII text
そしてファイルの最終バージョンはデータベースに完全にインポートされました。
あなたはvimでこれを修正することができます。
:1,$s/^V^M//g
^は制御文字です。
これが私の場合うまくいった唯一のことです。
:e ++ff=dos
:wq
設定が壊れていて、マッピングで^ M文字が必要な場合は、単に^ M文字を<Enter>
または<C-m>
に置き換えることができます(どちらも単純な文字シーケンスとして入力されるので、それぞれ7文字と5文字)。
これは、マッピングに特別なキーコードを格納するための、お勧めのポータブルな方法です。
FreeBSDでは、次のように入力して^M
を手動で消去することができます。
:%s/
Ctrl+Vそれから Ctrl+Mそれから Ctrl+M 再び。
意図的に別のfileformat
を指定しなかった場合(たとえば、Windowsファイルの場合は:e ++ff=unix
)、ターゲットファイルにEOLが混在している可能性があります。
例えば、ファイルに<CR><NL>
の末尾と<NL>
の末尾を持つ行がいくつかあり、その読み込み時にVimによってfileformat
が自動的にunix
に設定されると、^M (<CR>)
が表示されます。そのような場合、fileformats
が効力を発揮します。詳細は:help ffs
を見てください。
私のHomebrew Mvimインスタンスがfiletype = dosを使うように設定されていたために、何週間もファイルを汚染していることがわかりました。 .vimrcに必要な変更を加えました....
:%s/\^M//
を試してください少なくともこれは私のために働いた。