2010-10-05 14 views
105

Kennt jemand einen Texteditor unter Linux, der es mir erlaubt, Zeilenumbrüche und Zeilenumbrüche zu sehen? Unterstützt Vim diese Funktion?Siehe Zeilenumbrüche und Wagenrücklauf im Editor

+0

HINWEIS: manchmal Newline ($) und Wagenrücklauf (^ M) sind in vielen Farbschemas und auch während der Verwendung von Putty zu SSH versteckt. –

Antwort

91

:set list in Vim wird Leerzeichen anzeigen. Das Zeilenende wird als '$' angezeigt und die Wagenrückläufe werden normalerweise als '^M' angezeigt.

+1

Die gleiche Frage hier: http://superuser.com/questions/97692/vim-show-line-feeds-carriage-return –

+167

Falsche, ': Set-Liste' wird nicht angezeigt'^M' Zeichen (CRs). Wenn Sie die Option "-b" für vi/vim bereitstellen, funktioniert das auch. Oder, sobald vim geladen ist, tippe: ': e ++ ff = unix' – CaptSaltyJack

+4

@CaptSaltyJack Das muss seine eigene Antwort sein ..... –

68

VI zeigt Zeilenumbrüche (LF-Zeichen, Code x0A), indem der nachfolgende Text in der nächsten Zeile angezeigt wird.

Verwenden Sie den Schalter -b für den Binärmodus. ZB vi -b filename oder vim -b filename --.

Es zeigt dann CR-Zeichen (x0D), die normalerweise in Unix-Style-Dateien verwendet werden, wie die Zeichen ^M.

146

mit der offiziellen Antwort anderer Meinung zu sein:

:set list wird nicht Show^M Zeichen (CR). Die Option -b für vi/vim bereitzustellen funktioniert. Oder, sobald vim geladen ist, geben Sie :e ++ff=unix ein.

+1

Warum funktioniert ': set ff = unix' nicht, aber': e ++ ff = unix' tut das? –

+2

Es ist die Syntax. ': help edit'shows' e [dit]! [++ opt] [+ cmd] '. Und ': help ++ e' sagt _Das Argument [++ opt] kann verwendet werden, um den Wert von 'Dateiformat' [..] _ zu erzwingen. – dennis

+11

nur um zu verdeutlichen, ': set list' zeigt newline (' $ '),': e ++ ff = unix' zeigt CR ('^ M'); Wenn Sie beides sehen wollen, ': set list' dann': e ++ ff = unix' –

9

Versuchen Sie den folgenden Befehl.

: set binärer

In VIM, soll dies das gleiche tun wie mit der "-b" Befehlszeilenoption. Wenn Sie diese Datei in Ihre Startdatei (z. B. .vimrc) einfügen, ist sie immer für Sie da.

Auf vielen * nix-Systemen gibt es einen Befehl "dos2unix" oder "unix2dos", der die Datei verarbeiten und alle vermuteten Probleme mit der Zeilenendung korrigieren kann. Wenn es keine Probleme mit den Zeilenenden gibt, werden die Dateien nicht geändert.

1

Ich empfehle Ihnen, Ihre .vimrc-Datei zu bearbeiten, um eine Liste von Befehlen auszuführen. Bearbeiten Sie Ihre .vimrc Datei, wie folgt aus:

cat >> ~/.vimrc <<EOF 
set ffs=unix 
set encoding=utf-8 
set fileencoding=utf-8 
set listchars=eol:¶ 
set list 
EOF 

Wenn Sie vim sind ausführen, werden die Befehle in .vimrc ausgeführt wird, und Sie können dieses Beispiel sehen:

My line with CRLF eol here ^M¶ 
8

Nur um zu klären, warum :set list zeigt CRs nicht als ^M ohne e ++ff=unix und warum :set list hat nichts mit ^M 's zu tun. Intern

wenn Vim liest eine Datei in seinem Puffer, ersetzt er alle Zeilenende-Zeichen mit seiner eigenen Darstellung (nennen wir es $ ‚s). Um festzustellen, welche Zeichen entfernt werden sollen, erkennt es zunächst, in welchem ​​Format Zeilenendungen in einer Datei gespeichert sind. Wenn nur CRLF '\r\n' oder nur CR '\r' oder nur LF '\n' Zeilenendezeichen vorhanden sind, wird 'fileformat' auf dos, mac bzw. unix gesetzt.

Wenn die Option list aktiviert ist, zeigt Vim $ Zeichen an, wenn der Zeilenumbruch aufgetreten ist, unabhängig davon, welche Option fileformat erkannt wurde. Es verwendet eine eigene interne Darstellung von Zeilenumbrüchen und es wird angezeigt.

Wenn Sie nun Puffer auf die Platte schreiben , fügt Vim Zeilenende-Zeichen nach dem, was fileformat Optionen erkannt hat beed, essentialy alle diese internen $ ‚s mit entsprechenden Zeichen zu konvertieren. Wenn der fileformat zufällig unix ist, dann wird es einfach \n anstelle von seinem internen Zeilenumbruch schreiben.

Der Trick besteht darin, Vim zu zwingen, eine dos codierte Datei als unix eins zu lesen. Der Nettoeffekt ist, dass es alle \n 's entfernt \r' s unberührt entfernt und sie als ^M 's in Ihrem Puffer anzeigen. Die Einstellung :set list zeigt zusätzlich interne Zeilenenden als $. Immerhin sehen Sie ^M$ anstelle von dos codierten Zeilenumbrüchen.

Beachten Sie auch, dass :set list nichts mit der Anzeige ^M 's zu tun hat. Sie können es selbst überprüfen (stellen Sie sicher, dass Sie die Option list zuerst deaktiviert haben), indem Sie einen einzelnen CR unter Verwendung von CTRL-V gefolgt von Enter im Einfügemodus einfügen. Nach dem Schreiben Puffer auf Disc und öffnet es wieder werden Sie ^M trotz list Option ses

auf 0 gesetzt werden Sie mehr über Dateiformate auf http://vim.wikia.com/wiki/File_format finden oder durch :help 'fileformat' in Vim eingeben.