質問: ### urxvtでvimのcolorschemeが正しく表示されない gvimではcolorschemeは正しく表示されるのですが、 urxvtでvimを実行したときは背景や行番号の色などが正しく表示されません。 ■OS : Manjaro ■起動shell : bash → fish (.bashrc 内に exec fish) ■terminal : urxvt ■$TERM : rxvt-unicode-256color ■colorscheme : iceberg ### gvim 実行画面 正しい! ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/d526ce43f4e031d296bf32b5d87eb950.png) ### urxvt vim 実行画面 正しくない! ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/0b4f99cf4686eae4eed7325b5497e745.png) ### 該当のソースコード ``` syntax on set t_Co=256 set number set clipboard+=autoselect set clipboard^=unnamed,unnamedplus colorscheme iceberg ``` ### 試したこと xtermでも試しましたがダメでした よろしくお願いします
回答: まず結論から書くと **「正しくないという表示状態が正しい状態であり、素のurxvtではgvimとまったく同じように表示する事はできません」** となります。 ### 端末での色事情 端末上で動くアプリケーションで使える色は、長い間(多くても)256色しか有りませんでした。その為、1677万色使えるGUIアプリに対して色の表現力が劣ってしまいます。 Vimでもこの制限が適用される為、iceberg では端末用の256色から選んだ色と、gvim用の1677万色から選んだ色が定義されています。正しくないと言っている表示は、この端末用の256色が適用された状態です。 ### 端末でのDirect Color対応 長い間端末で使える色は最大で256色でしたが、近年Konsoleにて1677万色が使える拡張(Direct ColorまたはTrue Colorと呼ばれています)が提案され、いくつかの端末がこのDirect Colorに対応しました。 VimもDirect Colorに対応しており、Direct Colorに対応した端末(例えばxterm)で使う場合は以下の設定を.vimrcに追加する事によって端末上でもgvim用の色設定で表示する事が可能になります。 ``` set termguicolors ``` しかし、urxvtはDirect Colorに対応していないので、上記設定を行うと正しく色が出なくなります。 ### urxvtでのDirect Color対応 素のurxvtはDirect Colorに対応していませんが、Direct Color対応パッチが存在するようですので、このパッチを適用すればurxvtでもDirect Colorが使えるかもしれません。ただし私自身はこのパッチを使った事が無いので、ちゃんと使えるかは未確認です。