Siehe Zeilenumbrüche und Zeilenumbrüche im Editor

177

Kennt jemand einen Texteditor unter Linux, mit dem ich Zeilenumbrüche und Zeilenumbrüche sehen kann? Unterstützt Vim diese Funktion?

Usertest
quelle
HINWEIS: Manchmal werden Zeilenumbruch ($) und Wagenrücklauf (^ M) in VIELEN Farbschemata und auch bei Verwendung von Kitt für ssh ausgeblendet.
Vanessa Sanchez
1
OP Ich denke, Sie sollten die ausgewählte Antwort überdenken. da die ausgewählte Antwort nicht funktioniert. Die Antwort von CaptSaltyJack funktioniert jedoch gut.
JavaSheriff
OP Was BEIDE zeigen wird, ist die Lösung von @arno. Ich musste BEIDE sehen, weil ich eine Datei habe, die zufällig alle 3 Dateiformate verwendet ... Und Arnos Lösung funktioniert
Wayne Walker

Antworten:

138

:set listin Vim wird Leerzeichen angezeigt. Zeilenende wird als ' $' angezeigt, und Wagenrückläufe werden normalerweise als ' ^M' angezeigt.

jay.lee
quelle
2
Gleiche Frage hier: superuser.com/questions/97692/…
Alec Jacobson
251
Falsch, :set listzeigt KEINE ^MZeichen (CRs) an. Das Bereitstellen der -bOption zu vi / vim funktioniert. Oder geben Sie nach dem Laden von vim :e ++ff=unix
Folgendes ein
15
Zu :set nolist
Ihrer Information
@ Tomofumi eine Bearbeitung mit Ihrer Position ist willkommen!
Pipo
1
Falsche Antwort. : Die Set-Liste zeigt NICHT ^ M Zeichen (CRs) an. Verwenden Sie die Option -b, damit vi / vim funktioniert.
Nanosoft
263

Um der offiziellen Antwort nicht zuzustimmen:

:set listzeigt keine ^ M Zeichen (CRs) an. Das Bereitstellen der Option -b für vi / vim funktioniert. Oder geben Sie nach dem Laden von vim ein :e ++ff=unix.

CaptSaltyJack
quelle
4
Es ist die Syntax. :help editzeigt e[dit]! [++opt] [+cmd]. Und :help ++esagt, dass das Argument [++ opt] verwendet werden kann, um den Wert von 'fileformat' [..] zu erzwingen .
Dennis
19
nur zur Verdeutlichung, :set listzeigt newline ( $), :e ++ff=unixzeigt CR ( ^M); Wenn Sie beide sehen wollen, :set listdann:e ++ff=unix
Yibo Yang
5
Um den Kommentar von @ dennis zu erweitern, :set ff=unixweist Vim Vim an , die Zeilenenden in den Unix-Stil zu ändern (als Teil des Festlegens des Dateiformats), damit die ^ M-Zeichen nicht mehr vorhanden sind (und daher nicht angezeigt werden). :e ++ff=unixWeist es an, das Dateiformat zwangsweise festzulegen, unixohne den Inhalt tatsächlich zu ändern. Vim liest es also wie eine Unix-Datei, sieht die CR-Zeichen als Extra und zeigt sie als ^ M an.
Sundar - Reinstate Monica
1
Weder funktioniert immer noch nicht für mich vimaus irgendeinem Grund ... Ich meine weder -bOption, noch :e ++ff=unixwenn drinnen :(
RAM237
3
alles klar ,: e ++ ff = Unix hat funktioniert. Wie schalte ich es jetzt aus?
Croo
78

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

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

Anschließend werden CR-Zeichen ( x0D) als Zeichen angezeigt , die normalerweise nicht in Dateien im Unix-Stil verwendet werden ^M.

Larry K.
quelle
Normalerweise muss das Zeilenende nicht angezeigt werden, da ich hauptsächlich in der UnixUmgebung arbeite . Ich möchte jedoch vor Zeilenenden vom Typ Windows gewarnt werden, falls diese in der Datei vorhanden sind. Wird vi -b filenameoder wird :set binarynur angezeigt, ^Mob es sich um eine Windows-Datei handelt und ansonsten keine anderen Zeilenenden?
Alpha_989
30

Nur um zu klären, warum :set listCRs nicht als ^Mohne angezeigt werden e ++ff=unixund warum :set listnichts damit zu tun hat ^M.

Wenn Vim intern eine Datei in seinen Puffer einliest , ersetzt es alle zeilenenden Zeichen durch eine eigene Darstellung (nennen wir es $s). Um zu bestimmen, welche Zeichen entfernt werden sollen, wird zunächst erkannt, in welchem ​​Format Zeilenenden in einer Datei gespeichert sind. Wenn es nur CRLF sind '\r\n'oder nur CR '\r'oder nur LF '\n'Zeilenende - Zeichen, dann die 'fileformat'festgelegt ist dos, macund unixjeweils.

Wenn die listOption festgelegt ist, zeigt Vim das $Zeichen an, wenn der Zeilenumbruch aufgetreten ist, unabhängig davon, welche fileformatOption erkannt wurde. Es verwendet eine eigene interne Darstellung von Zeilenumbrüchen und zeigt diese an.

Wenn Sie nun Puffer auf die Disc schreiben , fügt Vim zeilenende Zeichen entsprechend fileformatden erkannten Optionen ein und konvertiert im Wesentlichen alle internen $Zeichen mit den entsprechenden Zeichen. Wenn das fileformatpassiert ist, unixschreibt es einfach \nanstelle seines internen Zeilenumbruchs.

Der Trick besteht darin, Vim zu zwingen, eine doscodierte Datei als unixeine zu lesen . Der Nettoeffekt ist , dass sie alle entfernen wird \n‚s verlassen \rsie s unberührt und zeigt , wie‘ ^Ms in Ihrem Puffer. Bei der Einstellung :set listwerden zusätzlich interne Zeilenenden als angezeigt $. Immerhin sehen Sie ^M$anstelle von doscodierten Zeilenumbrüchen.

Beachten Sie auch, dass dies :set listnichts mit Anzeigen zu tun hat ^M. Sie können dies selbst überprüfen (stellen Sie sicher, dass Sie die listOption zuerst deaktiviert haben ), indem Sie eine einzelne CR mit und CTRL-Vanschließend Enterim Einfügemodus einfügen. Nachdem Sie den Puffer auf die Disc geschrieben und erneut geöffnet haben, wird dies angezeigt, ^Mobwohl die listOption auf 0 gesetzt ist.

Weitere Informationen zu Dateiformaten finden Sie unter http://vim.wikia.com/wiki/File_format oder durch Eingabe :help 'fileformat'von Vim.

Paweł Smolak
quelle
11

Versuchen Sie den folgenden Befehl.

: binär setzen

In VIM sollte dies dasselbe tun wie die Verwendung der Befehlszeilenoption "-b". Wenn Sie dies in Ihre Startdatei (dh .vimrc) einfügen, ist es immer für Sie vorhanden.

Auf vielen * nix-Systemen gibt es einen Befehl "dos2unix" oder "unix2dos", mit dem die Datei verarbeitet und vermutete Probleme mit dem Zeilenende behoben werden können. Wenn es keine Probleme mit den Zeilenenden gibt, werden die Dateien nicht geändert.

Brian S. Wilson
quelle
Leider ist in meinem System (Ubuntu 16.04) set binarynicht das gleiche wie vim -b filename.py. Irgendeine Idee warum? Ich habe das überprüft helpund es scheint, dass das, was Sie sagen, im Allgemeinen richtig ist. Wie finde ich heraus, warum das so ist?
Alpha_989
:e ++ff=unixzeigt das ^Mrichtig an und zeigt es nicht an, wenn ich unix
Typdateien
6

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

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

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

My line with CRLF eol here ^M¶
Arno
quelle
2

Mit catund -Akönnen Sie neue Zeilen als $, Registerkarten als sehen^I
cat -A myfile

mirhossein
quelle
0

Sie können Bruchlinien mit dem gedit- Editor anzeigen .

Erstens, wenn Sie nicht installiert haben:

sudo apt-get install gedit

Installieren Sie jetzt die gedit-Plugins :

sudo apt-get install gedit-plugins

Wählen Sie das Plugin " Räume zeichnen" , geben Sie "Einstellungen" ein und wählen Sie " Neue Linien zeichnen"

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Mit VSCode können Sie installieren Zeilenenden Erweiterung.

Sublime Text 3 verfügt über ein Plugin namens RawLineEdit , das Zeilenenden anzeigt und das Einfügen eines beliebigen Zeilenendentyps ermöglicht

shift + ctrl + p Geben Sie den Namen des Plugins ein und wechseln Sie, um das Zeilenende anzuzeigen.

Danilo
quelle