2011-01-09 6 views
1

Wie Sie alle wissen, unterscheiden sich die Zeilenendungen in DOS/Windows-Dateien von denen von Unix/Linux. Wenn ich also eine Datei öffne, die ich mit Windows erstellt habe, sehe ich Hunderte von^M nach jeder Zeile. Viele Menschen vorgeschlagen, dieses Problem zu lösen mit:DOS/Windows-Textdatei in Linux lesen

set fileformat=dos 

Ich habe versucht, dies aber es funktioniert nicht, denn soweit ich bemerkte, es Vim sagt, wie zu „retten“, um die Datei, anstatt wie zu „lesen“ die Datei. Was ich will, ist, Line-Endings so zu behalten, wie sie sind, sei es Linux, Windows oder MAC, lesen Sie sie richtig, und speichern Sie die Datei mit dem gleichen Format aftr Bearbeitung.

Irgendeine Idee?

Antwort

3
  1. set fileformats=unix,dos,mac 
    

    zu Ihrem vimrc hinzufügen.

  2. Führen Sie in der geöffneten Datei :e ++ff=dos aus, wenn vim die korrekte Zeilenendung nicht erkennen konnte.

+0

Das ist großartig! Also meinst du "set fileformats = unix, dos, mac" sollte den Job machen, aber in meinem Fall kann es keine korrekten Zeilenenden erkennen? Warum sollte es scheitern? Ich sehe nichts Schwieriges bei der Erkennung von Zeilenenden, besonders für einen fortgeschrittenen Editor wie Vim. – Rafid

+1

@Rafid K. Abdullah Wenn ich mich richtig erinnere, scheitert es mit gemischten LF/CRLF Zeilenendungen. – ZyX

+0

Aha, das ist ein guter Punkt. Noch eine Stimme! – Rafid

0
" put this in your ~/.vimrc, resource then and try :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 your file." 
    endtry 
    let @/=_s 
    call cursor(l, c) 
endfun 
com! Dos2Unix keepjumps call Dos2unixFunction() 
Verwandte Themen