web-dev-qa-db-ja.com

Vimに色コードで示される色を表示させる方法は?

要するに、私はlessvimvimpager)で置き換える努力をしています。私は、スクリプトが色(およびボールドとすべてのニース)をできる限り出力するように設定できます。 lessはカラーコードを理解し、うまく表示します。 vimがコードを解析して色/太さをlessのように表示するにはどうすればよいですか?

62
phunehehe

2つの答え:

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

長い答え:期待できる最善の方法は、部分的に移植できないソリューションです。 Lessは、端末のエスケープシーケンスを実際には理解していません。これらは主に端末に依存しているためですが、-r(または-R)オプション。端末はエスケープシーケンスを解釈し、テキストの属性(色、太字、下線...)を変更します。 Vimはページャーではなくエディターであるため、そのままの制御文字を端末に渡すだけではありません。それらを何らかの方法で表示する必要があるため、実際に編集できます。シーケンスを非表示にしてテキストの色を設定するための隠蔽や構文の強調表示など、vimの他の機能を使用できますが、常にターミナルシーケンスのサブセットのみを処理し、一部のターミナルでは機能しない可能性があります。 。

これは、テキストエディターをポケットベルとして使用しようとしたときに発生する多くの問題の1つにすぎません。

45
Jan Hlavacek

Vim 8では、ターミナルモードを使用できます:terminalそしてその端末でcat myfileし、Ctrl-w Nで通常モードに戻ります。これにより、ANSIカラーコードが正しく表示されます。これらのステップを自動化し、ファイルの代わりに標準入力から読み取ることにより、vimを使用してlessを置き換えることができるはずです。

4
rubystallion