Vim カラー スキームがプラグインによって上書きされる

Vim カラー スキームがプラグインによって上書きされる

Vdebug のより美しいハイライトを設定しようとしています。

私はソース、そして をターゲットにする必要があると書かれていますDbgBreakptLine(それが何と呼ばれているのかはわかりませんが、 の後に置くものですhi)。

しかし、もし私がこう言うなら:

hi DbgBreakptLine ctermbg=NONE ctermfg=NONE

私のvimカラースキームでは、何も起こりません。しかし、これをセッションに貼り付けると、望み通りの効果が得られます。Vdebugが何らかの方法で優先することで、私が選択したスタイルを台無しにしているとしか考えられません。しかし、どのように?カラースキームの後に実行されているのでしょうか?そうではないと思います。なぜなら、私の.vimrcが最初に行うことは、pathogenをロードすることです。それから配色を選択します。

これを踏まえて、プラグインが設定を上書きする解決策をインターネットで調べてみましたが、役に立つものは見つかりませんでした。

私の .vimrc の関連部分:

execute pathogen#infect()
call pathogen#helptags()

colorscheme maxbucknell

アップデート

私は見てみましたこの質問を見て、どのファイルがいつロードされるかを示す を見てみようと思いました:scrip。確かに、プラグインは色の後にロードされます。理想的には、プラグインを変更したり、コマンドを 内に置くなどのハッキーなことをしたりせずに、これをカスタマイズする方法が欲しいです.vim/after

答え1

プラグインが実際にそのハイライト グループのスタイルを定義していることに気付きましたか?

hi default DbgBreakptLine term=reverse ctermfg=White ctermbg=Green guifg=#ffffff guibg=#00ff00

それはソースからあなたの~/.vimrc そしてあなたのカラースキームでは、同じ名前のルールが上書きされます。

残念ながら、これはあまりきれいではないので、基本的には 3 つの実行可能なオプションがあります。

  • プラグイン内で色を変更し、

  • これらの行をプラグインからカラースキームに移動し、好みに合わせて編集します。

  • 次の行を追加します~/.vimrc:

    augroup MyColors
        autocmd!
        autocmd ColorScheme * highlight DbgBreakptLine ctermbg=NONE ctermfg=NONE
    augroup END
    

ディレクトリの使用は~/.vim/after/ハックではありません。確かに十分に文書化されていませんが、通常、 内の同等の混乱よりもはるかにクリーンです~/.vimrc。とにかく、それが特定のニーズに機能するかどうかはわかりません。試すことができますこのプラグイン(試したことはありません) ただし、セットアップに別のプラグインが必要なのかどうかはわかりません。

編集

実際には、 で実行できます~/.vim/after/が、このソリューションは「プラグイン」と「カラースキーム」を混在させているため、私にはかなり「ハック」に見えます。とにかく、次の行を挿入するだけです~/.vim/after/plugin/foo.vim(ファイル名のドットの前の部分は関係ありません)。

hi DbgBreakptLine ctermbg=NONE ctermfg=NONE

関連情報