元のタイトルは «言語固有の配色により、単純なものが特定の言語固有のタグに色を付けることができなくなります»でした
私はgVim 7.3を使用しています(Ubuntu 12.04 Arch x86/64では、それが重要です)。
更新 (2013-03-02):
ようやく私の言いたいことを正確に表現できると思います (正しいコマンドが存在するとしても、まだ見つけられませんでした!)。基本的には以下の流れです。
- いくつかの基本的なグループ (ステートメント、コメント、関数など) を定義する小さなフットプリントカラースキームでセッションを開始します。
- より具体的なグループ (vimCommand、hsImport、rubyBeginEnd など) を定義する「より大きな」配色 (Solarized や Jellybeans など) に切り替えます。これらのより具体的なグループは、基本的なグループよりも優先されます。
- 「より小さな」配色 (特定のグループを定義しない配色) に切り替えます。
その結果、セッションは「ホームレス」グループで雑然とし、基本的な単語がわかりにくくなり、一部の単語がまったく強調表示されなくなります。これらのホームレス グループは次のようになります。
入力 :hi vimCommand
Enter
出力 vimCommand xxx cleared
ちなみに、Solarized の github issue tracker で同様のことが経験され、発行されています → Vim のカラースキームは、切り替えると破壊の跡が残ります
更新 (2012 年 11 月 25 日):
おそらく、良い解決策は、現在のセッションの「ハイライト」変数をクリアすることです ( 、 、 などsmartindent
の変数についてではなくencoding
、 、などの変数、つまり 、 などのコマンドで定義された変数について話しているのです)。
誰かがそれがメモリにどのように格納されているかを説明できれば、それを消去する方法を理解するのに役立つかもしれません (セッションを保存してから調べてみましたが、構文を強調表示する変数の痕跡はありません)。number
Statement
Comment
rubyClass
xmlTag
hi link ...
highlight ...
:mksession mysession.vim
また、これは漠然とした仮定に過ぎませんが、 がハイライト グループ:hi clear
をクリーンアップしないのは、「残り物」が間接的な定義 (例: ) によって定義されているためと思われます。hi link
オリジナル:
デフォルトのカラースキーム ( blueshift の修正版) が読み込まれると、強調表示する必要があるすべてのタグが正しく色付けされます。
セッション中に、デフォルトのカラースキームよりも多くのオプションがあるジェリービーンズのカラースキーム( )に切り替えます。:colo jellybeans
デフォルトの配色 ( ) に再度切り替えると:colo blueshifted
、一部の強調表示が無効になります。
セッションの開始時に、一部の言語固有のタグの動作を指定しない配色を使用すると、それらのタグは既存の色を使用して自動的に色付けされるようです。
ジェリービーンズの言語固有のタグは「キャッシュ」に残り、自動カラーリング機能を無効にする責任があることを私は知っています。自動彩色は損なわれません。
他の配色でも同じことが起こります (たとえば、railscasts.vim は HTML 固有の配色を使用します)。特定性の低い配色に欠落しているタグを追加することで問題を解決できることはわかっていますが、より一般的な解決策を探しています。
質問
これらの自動設定色 (最初の配色が読み込まれたときに使用される) が、より詳細な配色の後に詳細度の低い配色が読み込まれたときに無効にならないようにするにはどうすればよいですか?
カラースキームを変更するときに、セッションキャッシュをクリーンアップできますか (つまり、jellybeans.vim が使用する特定のタグを「セッションキャッシュ」から削除します)?
私の試み これらは、私がさまざまな組み合わせで使用したコマンドですが、役に立ちませんでした:
:syntax off
:syntax clear
:hi clear
:syntax reset
機能する唯一の方法 (明らかに!) はhi link
、「単純な」配色に欠けているコマンドを手動で再定義することです。しかしもちろん、これは他のカラースキーム (Solarized など) を変更した色で使用しても違いはありません。もちろん、これは「ハイライト グループの残り物をどのように削除しますか?」という質問に対する解決策ではありません。