16のANSIカラーVimテーマによる一貫したターミナル色


当初公開jeffkreeftmeijer.com/vim-16-color 2018年11月29日
Vimとターミナルの残りのために別々に色を構成する代わりに、16のANSIカラーにVimの配色を制限することは、終末のテーマですべての色設定をセットするのを許します.そうすることは、端末ユーティリティと別のもののために交換するのが速いカラーテーマの間で一貫した色をもたらします.

図1.ターミナルのTMUXでVIMとGITログ側.アプリ.使用によってDim Vimのカラースキームとして、すべての色の値はterminal theme (暗モードと明るいモードを示す).フォントはSFモノラルで、1.2 ptのライン間隔で14 ptです.
使用しているa customized version of 最後の数年間のVimのデフォルトのカラースキーム.Vimのデフォルトとは異なり、0と15の間の値に各色を設定することにより、16のANSI色を排他的に使用します.端末エミュレータのテーマは、Vimのカラースキームにハードコーディングの代わりに、特定の色の値を設定し、真の色のサポートに頼る.
端末のテーマを排他的に使用すると、すべてのユーティリティが同じ色の値を使用します.例えば、私はTMUXの色を設定しません、緑の色が端末テーマが使用するように、私が好きである陰ですでに.

端末色とANSIエスケープシーケンス


ターミナルエミュレータは、カーソルの位置を制御するような他のものの間にANSIエスケープシーケンスを使用します.印刷出力時に目的のテキストと背景色を読み取ります.
$ echo - e "\033 [ 31 mred\033 [ m "Cherchen -赤で"red "を出力します.
ほとんどの端末エミュレータは、Appleの端末を含む.アプリケーションは、真の色をサポートし、ほとんどのユーティリティは、主な16の色(黒、赤、緑、黄色、青、マゼンタ、シアン、ホワイト、それぞれの高強度または明るいバージョン)のいずれかを使用します.
例えば、Gitは赤で緑と削除の追加でdiffsを示します、そして、大部分のテストフレームワークは合格テストのために緑の点を印刷します、そして、失敗のために赤いFのもの.

今日使用するターミナルエミュレータは、これらの相対的な名前付き色のそれぞれを24ビットのカラー値で割り当てます.これは端末エミュレータのスタイルからユーティリティの意図(“赤でこのエラーを印刷する”)を分離します(“Chenhan c 31633は赤の良い陰”です).これらの色は、使用するフォントやその他のオプションと一緒に、ターミナルエミュレータの設定で設定可能です.

8ビットと24ビットのANSIカラー

Beyond the first sixteen named colors numbered 1 through 16, we arrive in absolute color territory. The color codes from 16 to 255 are used to print 8-bit colors, from which 232 to 255 are grayscale values from black to white.

# prints “hotpink” in #205 (HEX: #f69, RGB: 255, 102, 153)
$ echo -e "\033[38;5;205mhotpink\033[m"

Then, there’s 24-bit color, also named true color, which has 16.777.216 different color values.

# prints “giant goldfish” in 24-bit orange (HEX: #F38630, RGB: 243, 134, 48)
$ echo -e "\033[38;2;243;134;48mgiant goldfish\033[0m"

Being absolute color values, they’re not configurable in the terminal emulator’s settings.


ターミナルテーマ


端末のテーマを変更することによってappsignal.terminal またはhundreds 他の利用可能なテーマの場合は、端末エミュレータは、任意の真の色の値の相対色を表示できます.使用#C31633 例えば、その正確な色のGitのdiff出力の赤い色の削除のために.

Tip: In Terminal.app, use +I to open the Inspector to change the current window’s theme without opening a new terminal window.


ターミナルエミュレータのプロファイルの正確な色の値を設定するか、または端末のテーマを使用すると、ユーティリティは、正確な陰を供給することなく、“黄色”としていくつかの出力をマークすることができます.シェードは、端末またはユーザーの好みのいずれかです.

Vimカラースキーム


他のユーティリティとは異なり、VIMは、すべての設定のために同じ色に見えるようにしようとすると、各ハイライトグループの絶対色を使用する8ビットまたは24ビットのカラースキームを使用しています.これらのスキームは、名前の色のいずれかを使用しないため、端末の色設定に影響を与えません.
Vimとターミナルの残りの間の一貫した色を持っているターミナルエミュレータの中にVIMを使用するとき、複製の色設定を必要とします.最初に、vimカラースキームは、各ハイライトグループの絶対的な色の値を使用します.次に、端末エミュレータは、Vimスキームと同じ色を使用して相対色をカスタマイズするテーマを必要とします.
vimカラースキームなら#C31633 赤い色として、端末のテーマは、“赤”ANSIの色としてその色を使用する必要がありますそのようなVimの外のGitのdiffsの同じ色を使用します.

DIM:16色vimカラースキーム


複製の色設定を必要としないで、すべての端末ユーティリティで一貫した色を達成するために、4ビットのVimカラースキームNoctu and Dim 排他的に最初の16の相対ANSI色を使用します.これは16色の端末と互換性がありますが、端末ユーティリティ間の一貫した色になります.
薄暗いVimのデフォルトのカラースキームに基づいています.Vimのデフォルトはほとんど相対色を使用しますが、それはハイライトグループのいくつかのために8ビットの絶対色を使用します.デフォルトでは、行番号と文ブラウン、diffs lightblueとdarkblue、完成メニューピンク、およびコメントansi blueを着色します.
それが気が散るので、暗がりはこれらの各々のために灰色の色を使います.

図2.Vimのデフォルトのカラースキーム(左)とDIM、AppSignalの両方.端末のテーマとして端末.DIMは、完成メニュー、ライン番号と折り目のような二次的な特徴のために調光された色を持ちます.
端末のテーマでスタイルと特定の色の値から意図を分離することによって、端末のすべてのユーティリティは一貫した色を使用します.これは、テーマの暗いと軽バージョンの間のスイッチングのようなテーマを変更するには⌘+私は別の1つを選択し、Vimのマッチングカラースキームを見つけることなく.