Anzeige von CR und LF anstelle von “EOL” in ': set list'


12

Anstatt ein Zeichen auszuwählen, das als EOL-Zeichen angezeigt werden soll, möchte ich, dass eines sowohl für CR als auch für LF separat angezeigt wird, unabhängig davon, ob die Datei Unix oder DOS ist. Ist das möglich?


2
Also, wenn ich Sie richtig verstehe, möchten Sie so etwas wie Hello%$für DOS-Dateien (wo %ist ein CR und $ist ein LF)? Dies ist mit der Einstellung list/ nicht möglich listchars, und ich kann mir auch keine Möglichkeit dafür in VimScript ausdenken ...
Martin Tournoij

1
@Carpetsmoker Das stimmt. Abgesehen davon, set listgibt es eine Möglichkeit, bestimmte Charaktere zu haben CRund zu LFzeigen?
Captain Man

2
Möglicherweise können Sie sie in einer bestimmten Farbe hervorheben, aber es gibt keine Möglichkeit, sie als bestimmte Zeichen anzuzeigen, die nicht hacky afaik sind.
EvergreenTree

Ich denke, dass entweder CR oder LF gleichzeitig zu sehen sind, nicht beide.
SibiCoder

1
set stl+=\ [%{&ff=='mac'?'CR':&ff=='unix'?'LF':'CRLF'}]
Antony

Antworten:


2

Mit einigen Einschränkungen können Sie dies im Binärmodus von Vim tun. Möglicherweise möchten Sie den Befehl verwenden

vim -b +'set list' somefile

Alternativ können Sie Folgendes in Ihre Liste aufnehmen .vimrc:

:set binary
:set list

Wichtig ist, dass der Binärmodus gesetzt wird, bevor die betreffende Datei in einen Puffer eingelesen wird. Sobald Vim die Datei eingelesen hat, ist es zu spät. Dieser Trick beruht darauf, zu ändern, wie Vim die Datei einliest. Insbesondere muss Vim nicht versuchen, den Dateityp zu erraten <EOL>.

Der Binärmodus macht das, was Sie wollen und deaktiviert diese automatische Erkennung von Zeilentrennern, aber er macht auch einige andere Dinge:

  • setzt 'textwidth'auf 0
  • setzt 'wrapmargin'auf 0
  • nicht gesetzt 'modeline'
  • nicht gesetzt 'expandtab'

Vielleicht möchten Sie das nicht in Ihrem haben .vimrc. Es ist möglicherweise besser, die Befehlszeilenversion zu verwenden, und zwar nur für die Dateien, für die Sie diese spezielle Art der Anzeige benötigen.

Für mehr Informationen:

  • :help 'binary'
  • :help edit-binary
  • :help file-read
  • :help file-formats
  • :help 'fileformat'

but it does quite a few other things as wellLiegt das daran, dass die Binärdatei a FileTypemit einigen automatischen Befehlen versehen ist oder eine Art integriertes, unvermeidbares Element?
Captain Man

Mit diesem Satz wollte ich die Liste einführen, die unmittelbar darauf folgt.
Ptolemarch

Richtig, ich habe nur nicht das Ganze zitiert :) Was ich meinte war, macht es diese Dinge, weil es einige verwendet, FileTypedie binarymit diesen Auto-Befehlen aufgerufen wurden, oder war es nur eine eingebaute Sache?
Captain Man

1
Ah richtig. Nichts davon hat irgendetwas mit Dateitypen zu tun (aber es ist ziemlich in Dateiformaten verfangen). Dies ist Teil des Binärmodus. Sehen :help 'binary'. Und vielleicht :help 'fileformat'.
Ptolemarch

0

Wenn Sie zu Ihrem hinzufügen ~/.vimrc:

set ffs=unix
set list

Das wird sich immer CRso ^Mund LFso zeigen $.

Standardmäßig interpretiert vim eine Datei, die nur CRLFEndungen enthält, als DOS-Datei und zeigt sie CRLFals an $. Durch die Einstellung ffs=unixwird vim gezwungen, immer als Unix-Datei zu öffnen, und daher wird der CR als zusätzliches Zeichen behandelt.

Hinweis: Seien Sie vorsichtig, wenn Sie DOS-Dateien ändern und speichern. Wenn Sie drücken ENTER, wird nur ein LF. Sie müssten ein manuell CRdurch Eingabe einfügen CTRL+V, CTRL+M.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.