it-swarm.com.de

^ M am Ende jeder Zeile in vim

Wenn ich Quelldateien mit vim und anderen Editoren bearbeite, werden manchmal diese ^ M-Zeichen am Ende jeder Zeile angezeigt. Ich denke, dass es etwas mit dem Bearbeiten einer Datei in Windows und dann in Linux zu tun hat. Wie kann ich all diese automatisch entfernen?

125
DHamrick

Geben Sie als Befehl Folgendes ein

:%s/^M$//

(Um ^ M zu erhalten, drücken Sie ^ V ^ M, wobei ^ auf den meisten Tastaturen STRG ist.)

126
Tobias Baaz

Eine einfache Möglichkeit, die DOS-Zeilenenden zu entfernen, ist die Verwendung der Option ff:

:set ff=unix
:wq

Jetzt ist Ihre Datei wieder auf dem guten alten Unix-Weg.

Wenn Sie die DOS-Zeilenenden hinzufügen möchten (um einen Drucker glücklich zu machen oder Dateien mit Windows-Freunden zu übertragen, die keine netten Werkzeuge haben), können Sie leicht in die entgegengesetzte Richtung gehen:

:set ff=dos
:wq
83
sarnold

Du kannst das:

:set fileformats=dos

Die ^M Werden ausgeblendet, ohne die Datei zu berühren.

33
jqno

Es gibt ein Programm namens dos2unix , das diese für Sie entfernen sollte. Windows verwendet unterschiedliche Zeilenendezeichen, weshalb dies der Fall ist.

17
Adam Lassek

Dies funktionierte für mich in einer Datei, die alles in einer Zeile hatte:

Finden Sie zuerst alle Übereinstimmungen

:%s/^M//

(Bekommen ^M, drücke ^ V ^ M, wo ^ ist Ctrl auf den meisten Tastaturen)

Dann durch Zeilenumbrüche ersetzen

:%s//\r/g

Kombinierter Befehl wäre:

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

Ich neige dazu, betroffene Dateien durch fromdos zu führen, bevor ich sie wieder öffne. fromdos ist Teil des Pakets tofrodos .

2
Ted Percival

Möglicherweise wurde das Problem durch eine FTP-Übertragung verursacht. Wenn Sie diese Dateien per FTP von einer Box zur anderen übertragen, müssen Sie sicherstellen, dass ASCII Übertragungen verwendet werden. Verwenden Sie den Befehl "ASC".

1
Spencer Ruport
" put this in your ~/.vimrc file and :source ~/.vimrc
" then you can do: Dos2Unix
" dos2unix ^M
fun! Dos2unixFunction()
    let [email protected]/
    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, setze unix format (LF), ok

0
Vasily Chapaev