カラーコードに基づいてVim表示色を作成するには?

カラーコードに基づいてVim表示色を作成するには?

簡単に言えば、()を代わりにless使用しようとしています。できるだけ色が引き立つようにスクリプトを設定しました(太字、すべてが大丈夫です)。カラーコードを理解し、よく表示してみてください。この方法でコードを解析して色/太字で表示するにはどうすればよいですか?vimvimpagerlessvimless

答え1

2つの答え:

短い答え:vimスクリプトを使用したいAnsiEsc.vim。ファイル内の実際のANSIエスケープシーケンスを非表示にし、構文ハイライトを使用してテキストの色を適切に指定します。ポケットベルで使用する際の問題は、vimにいつ使用するかを認識させる必要があることです。単に常にロードできるのか、それとも他の文法ファイルと競合するのかはわかりません。あなたはそれを試す必要があります。

長い答え:あなたが望む最善の方法は部分的に移植性のないソリューションです。 Lessは実際にはターミナルエスケープシーケンスを理解していません。なぜなら、これらのシーケンスは端末に大きく依存しているからです。ただし、Lessはこれらのシーケンス(のサブセット)を認識し、-r(or -R)オプションが使用されている場合はそのシーケンスを端末に渡すことに気付きます。ターミナルはエスケープシーケンスを解釈し、テキストのプロパティ(色、太字、アンダースコア...)を変更します。ポケットベルよりも編集者であるVimは、単に生の制御文字を端末に渡しません。実際に編集できるように、何らかの方法で表示する必要があります。非表示や構文の強調など、vimの他の機能を使用してシーケンスを非表示にしてテキストの色を指定するために使用できますが、常に端末シーケンスのサブセットのみを処理し、一部の端末では機能しない場合があります。

これは、実際にはテキストエディタをポケットベルとして使用しようとしたときに直面する多くの問題の1つです。

答え2

vim 8では、ターミナルモードを使用してから、:terminalそのターミナルでcat myfileCtrl-w Nを使用して通常モードに戻ることができます。これにより、ANSIカラーコードが正しく表示されます。これらの手順を自動化し、ファイルの代わりに標準入力から読み取って、lessの代わりにvimを使用できるようにする必要があります。

たとえば、次のように実行できます。ls --color=always >/tmp/colored.txt

またはunbuffer ls >/tmp/colored.txt

それからvimから:terminal cat /tmp/colored.txt続けてください。:only

これにより、vimからls出力の素晴らしい色を得ることができますless。 vimは起動時にコマンドライン引数を使用してコマンドを渡すことをサポートしているため、このソリューションは交換操作を少なくするように変更できます。 :)

答え3

vimプラグインのインストール強化されたAnsiEsc .profile/bash_profile/zprofileに次のように入力します。

export PAGER="vim -R +AnsiEsc"

答え4

vimのjson構文強調を使用できます。通常、ほとんどのデフォルトのvimインストールで見つかります。たぶん気に入らないかもしれないけどless -R

  • Pythonを使用すると、人間が読むことができます。-mjson.tool
cat filename | python -mjson.tool | vim -c 'set syntax=json' -
  • Pythonはありませんが、jsonがきれいに印刷されている場合
cat filename | vim -c 'set syntax=json' -

また、一部のブラウザには、ブラウザに接続できるjson拡張機能があります。うーん、w3m純粋なCLI作業にはこれが十分であるかどうか疑問に思います。

お役に立てば幸いです。

関連情報