Rainbow CSV Plugin als Alternative zu Excel

Hallo Habr! Dieser Artikel handelt von dem Rainbow CSV-Plugin, das ich für 5 Texteditoren geschrieben habe:


VS Code , Vim , Erhabener Text 3 , Atom , Gedit


Ich denke, dass viele Leser dieses Artikels regelmäßig auf CSV-Dateien (durch Kommas getrennt), TSV-Dateien (durch Tabulatoren getrennt) und ähnliche Dateien stoßen. Wenn Sie versuchen, sie in einem Texteditor zu öffnen (und wie Sie sonst herausfinden können, was sich darin befindet?), Wird ein vollständig schlicht aussehendes Bild wie auf der linken Seite des Bildes geöffnet. Wenn man es betrachtet, ist es schwer zu sagen, wie viele Spalten in der Tabelle sind. Auf der rechten Seite des Bildes befindet sich dieselbe Datei mit aktiviertem RainbowCSV. Die Lesbarkeit wird durch die Hervorhebung der Syntax erheblich verbessert.


Bild


Seltsamerweise wird die Syntax für ein solches Highlight mit nur einer (wenn auch langen) Zeile für reguläre Ausdrücke festgelegt:


((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))?((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))?((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))?((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))?((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))?((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))?((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))?((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))?((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))?((?:"(?:[^"]*"")*[^"]*"(?:,|$))|(?:[^,]*(?:,|$)))? 

Die Hervorhebungsregel finden Sie beispielsweise hier vollständig (Version für VS-Code), aber abgesehen vom regulären Ausdruck selbst gibt es absolut nichts zu sehen.


Im Vergleich dazu sind die Syntaxdateien für Allzwecksprachen wie Python, JS, C ++ usw. bestimmt. Nehmen Sie normalerweise mehrere hundert Zeilen eines sehr esoterischen Codes auf.


Um den Artikel nicht im Detail zu laden, wird den Lesern angeboten, zu erraten, aus welchen grundlegenden Teilen er besteht und wie dieser reguläre Ausdruck funktioniert.


Hinweis: Hier ist ein einfacher Ausdruck ([^,]*,)?([^,]*,)? - Markieren Sie die CSV-Datei in zwei verschiedenen abwechselnden Farben, funktionieren jedoch bei Kommas in mit Anführungszeichen versehenen Feldern nicht ordnungsgemäß.


Im Folgenden wird übrigens die Rainbow CSV-Version für Visual Studio Code beschrieben, weil Dies ist die Version des Plugins, die derzeit die technisch fortschrittlichste und beliebteste ist (mehr als 500.000 Downloads).


Neben der Tatsache, dass Rainbow CSV die Spalten hervorhebt, kann es auch:


  • Geben Sie in der ersten Titelzeile an, auf welche Spalte der Cursor gerade zeigt: Spaltennummer + Name. Befindet sich am Anfang der Datei keine Kopfzeile (die Daten werden sofort gespeichert), kann der Benutzer seinen "virtuellen" Kopf festlegen.
  • Überprüfen Sie die Datei automatisch auf eine andere Anzahl von Einträgen pro Zeile oder auf die falsche Verwendung von Escape-Zeichen - "CSV Lint".
  • Führen Sie eine SQL-ähnliche Abfrage mit dem integrierten RBQL-Interpreter aus, mit dem Sie eine sehr breite Klasse von Texttransformationen auf die Eingabetabelle anwenden können.
    RBQL unterstützt fast alle SQL-Anweisungen (SELECT, UPDATE, WHERE, ORDER BY, TOP / LIMIT, JOIN, GROUP BY) sowie alle Standardfunktionen und -anweisungen von JavaScript und Python.
    RBQL ist eine separate Technologie, die jedoch sehr gut zum Konzept von Rainbow CSV passt. Daher bietet diese Integration viele Vorteile.

Eine der wichtigsten Funktionen von Rainbow CSV-Plugins ist die automatische Erkennung von CSV-Dateien anhand ihres Inhalts. Diese Funktionalität ist wichtig, weil Häufig haben CSV- (oder TSV-) Dateien eine andere Dateierweiterung als .csv (.tsv). Sie können auch Dateien mit der Erweiterung .csv finden, in denen ein Semikolon tatsächlich als Trennzeichen verwendet wird ; . Der Algorithmus zum Bestimmen einer Tabellendatei nach Inhalt ist sehr einfach - überprüfen Sie einfach, ob die Anzahl der Zellen in jeder Zeile beim Teilen für dieses Trennzeichen konstant> 1 ist.


Vergleich von Rainbow CSV mit grafischer Ausrichtung


Im Allgemeinen besteht die herkömmliche Methode zum Anzeigen von CSV-Daten darin, sie in einen Grafikeditor wie Excel zu importieren.
Im Vergleich zu dieser Methode hat Rainbow CSV sowohl Vor- als auch Nachteile:


Vorteile:


  • Was Sie sehen, ist was Sie erhalten - Sie können sicher sein, dass auf dem Bildschirm der tatsächliche Inhalt der Datei angezeigt wird.
  • Vertraute Umgebung Ihres bevorzugten Texteditors
  • Kostenfreie Abstraktion: Syntaxhervorhebung ist aus rechnerischer Sicht im Vergleich zur grafischen Ausrichtung sehr "billig".
  • Höhere Informationsdichte: Mehr Daten passen auf einen Bildschirm - die grafische Ausrichtung „verbraucht“ aufgrund von Ausrichtungsräumen viel Platz.
  • Die Möglichkeit, eine Spalte (in derselben Farbe hervorgehoben) aus verschiedenen Fenstern visuell zu verknüpfen

Nachteile:


  • Die Standardimplementierung verwendet 10 verschiedene Farben. Wenn also die Anzahl der Spalten mehr als 10 beträgt, beginnen sich die Farben zu wiederholen und die Farbcodierungseffizienz der Spalten nimmt ab.
  • Das Umschließen von Zeilen in Zellen, die mit doppelten Anführungszeichen versehen sind, wird nicht unterstützt. Hier können Sie die Details dieses Problems lesen. Ich glaube jedoch, dass CSV mit Zeilenumbruch in Zellen ein äußerst unpraktisches Format ist.

Vergleich mit der Textausrichtung


Eine andere Möglichkeit, die Lesbarkeit von CSV-Dateien zu verbessern, besteht darin, sie an Leerzeichen auszurichten. Diese Methode ändert jedoch den Inhalt der Datei, weshalb ihre Anwendbarkeit sehr eingeschränkt ist.


Meiner Meinung nach ist die Lesbarkeit einer Datei nach der syntaktischen Rainbow-Hervorhebung besser als die einer Datei, die an Leerzeichen ausgerichtet wurde.


Ein bisschen über das Projekt


Die erste Version von Rainbow CSV wurde vor 5 Jahren für Vim basierend auf dem Plugin rainbow_parentheses geschrieben . Wie Sie sehen, habe ich von diesem Projekt nicht nur einen Teil des Codes ausgeliehen, sondern auch den halben Namen =)
Versionen für VSCode, Atom und Sublime Text 3 wurden vor einem Jahr veröffentlicht.


Viele wichtige Funktionen und Verbesserungen wurden von Benutzern des Plugins vorgeschlagen.


Vergleich des Plug-In-Entwicklungsprozesses für verschiedene Editoren


Abschließend kann ich einen kleinen Vergleich der APIs gängiger Texteditoren anstellen.
Die APIs für die Plugins für VSCode, Atom und Sublime Text 3 sind ziemlich ähnlich. Der Hauptunterschied besteht darin, dass die Erweiterungen für VS Code und Atom in JavaScript und für Sublime Text 3 in Python geschrieben sind.


Alle drei Editoren verwenden dieselbe Regex-Engine für die Syntaxhervorhebung, sodass für das Verschieben der Rainbow CSV zwischen diesen Editoren nur eine minimale Anpassung der Stammgäste erforderlich ist.


Im Allgemeinen kann ich sagen, dass VS Code den angenehmsten und bequemsten Plug-In-Entwicklungsprozess bietet. Auf der anderen Seite fehlte es aus irgendeinem Grund anfangs an Funktionen, die für den vollständigen Betrieb von Rainbow CSV erforderlich waren, aber das VS Code-Team akzeptierte und verbesserte gerne meine PR, wodurch die von mir benötigte Methode hinzugefügt wurde.


Das Schreiben von Plugins für Vim unterscheidet sich stark von diesen 3 neueren Editoren. Vim verwendet eine eigene VimScript-Sprache sowie eine Vielzahl von Befehlen zum Bearbeiten des Inhalts geöffneter Dateien. Das Syntaxmodell, das Vim zum Hervorheben verwendet, unterscheidet sich ebenfalls erheblich von dem, was VSCode, Atom und Sublime bieten.


Referenzen:


Source: https://habr.com/ru/post/de429548/


All Articles