Excelの代替としてのRainbow CSVプラグイン

こんにちは、Habr! この記事は、5人のテキストエディター用に作成したRainbow CSVプラグインに関するものです。







VS CodeVimSublime Text 3AtomGedit







この記事の多くの読者は、CSV(カンマ区切り)、TSV(タブ区切り)、および同様のファイルに定期的に遭遇すると思います。 テキストエディターでそれらを開こうとすると(そして、他にどのように中身を見つけるのか?)、完全に見た目が美しい画像が画像の左側のように開きます。 それを見ると、テーブルにある列の数を言うのは難しいです。 画像の右側には、RainbowCSVをオンにした同じファイルがありますが、構文の強調表示により読みやすさが大幅に向上しています。







画像







奇妙なことに、このようなハイライトの構文は、1つ(長いですが)の正規表現行を使用して設定されます。







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





強調表示ルールは、たとえばここ (VS Codeのバージョン)で完全に見つけることができますが、正規表現自体は別として、見るべきものはまったくありません。







比較すると、構文ファイルは、Python、JS、C ++などの汎用言語向けです。 通常、非常に難解なコードを数百行使用します。







記事を詳細に読み込まないために、記事の基本部分と、この正規表現がどのように機能するかを推測することが読者に提供されます。







ヒント:簡単な式([^,]*,)?([^,]*,)?



-CSVファイルを2つの異なる交互の色で強調表示しますが、引用符でエスケープされたフィールド内のコンマでは正しく機能しません。







ちなみに、以降、Visual Studio CodeのRainbow CSVバージョンは、 これは、現在最も技術的に高度で人気のあるプラグインのバージョンです(50万ダウンロード以上)。







そのため、Rainbow CSVは列を強調表示するという事実に加えて、次のこともできます。









Rainbow CSVプラグインの最も重要な機能の1つは、コンテンツによるCSVファイルの自動検出です。 この機能は不可欠です 多くの場合、CSV(またはTSV)ファイルには、.csv(.tsv)以外のファイル拡張子が付いています。 また、拡張子が.csvで、セミコロンが実際にセパレータとして使用されているファイルを見つけることもできます;



。 内容ごとにテーブルファイルを決定するアルゴリズムは非常に単純です。このセパレータのsplit'eが一定である場合、各行のセルの数が1を超えないことを確認してください。







Rainbow CSVとグラフィカルな配置の比較



一般に、CSVデータを表示する従来の方法は、Excelなどのグラフィックエディターにインポートすることです。

この方法と比較して、Rainbow CSVには長所と短所の両方があります。







利点:





短所:





テキストの配置との比較



CSVファイルの読みやすさを向上させる別の方法は、ファイルをスペースに揃えることですが、この方法ではファイルの内容が変更されるため、その適用性は非常に制限されます。







また、私の意見では、Rainbowの構文の強調表示後のファイルの読みやすさは、スペースで揃えられたファイルの読みやすさよりも優れています。







プロジェクトについて少し



Rainbow CSVの最初のバージョンは、 rainbow_parenthesesプラグインに基づいて5年前にVimのために書かれました。ご覧のように、このプロジェクトからコードの一部だけでなく、名前の半分も借りました=)

VSCode、Atom、Sublime Text 3のバージョンは1年前に登場しました。







多くの重要な機能と改善がプラグインのユーザーによって提案されています。







さまざまなエディターのプラグイン開発プロセスの比較



結論として、一般的なテキストエディターのAPIを少し比較することができます。

VSCode、Atom、Sublime Text 3のプラグインのAPIは非常に似ていますが、主な違いは、VS CodeとAtomの拡張機能がJavaScriptで、Sublime Text 3がPythonで記述されていることです。







3つのエディターはすべて、構文の強調表示に同じ正規表現エンジンを使用しているため、これらのエディター間でRainbow CSVを移動するには、レギュラーの最小限の適応のみが必要でした。







一般的に、最も快適で便利なプラグイン開発プロセスはVS Codeによって提供されると言えます。 一方で、Rainbow CSVの完全な操作に必要な機能の一部が最初は欠けていたのは何らかの理由でしたが、VS Codeチームは喜んで私のPRを受け入れて改善し、必要な方法を追加しました。







Vim用のプラグインの作成は、これらの3つの新しいエディターとは大きく異なります。 Vimは、独自のVimScript言語と、開いているファイルの内容を操作するためのさまざまなコマンドを使用します。 Vimが強調表示に使用する構文モデルも、VSCode、Atom、Sublimeが提供するものとはまったく異なります。







参照:






All Articles