7

macvimでファイルを開くと、http://imgur.com/a/3cLqB#0のようになります。に設定,Vしました:source ~/.vimrc<CR>

このファイルを開いた後、を押す,Vと、構文の強調表示がこのhttp://imgur.com/a/3cLqB#1に変更されます。違いは、、、、が青(、白からなり、、、が青)、濃い青からなることです。なぜそれが起こるのですか?これは私のvimrcファイルですhttps://gist.github.com/pvinis/4979592;,->.?

-更新:それが色を変更するプラグインである
ことがわかりました。Valloric/vim-operator-highlightしたがって、最初の画像は正しい画像です。:syntax onまた、そうするとすぐに色がリセットされることもわかりました。構文がすでにオンになっているかどうかを確認する方法はありますか?

4

7 に答える 7

5

問題:

リロードする.vimrcと、一部のハイライト グループが台無しになります。使用しているプラ​​グインと使用している配色によって異なります。highlight links壊れているものもあれば、highlight groupsクリアされているものもあることに気付きました。

影響を受けるハイライト グループ

私の特定のセットアップでは、壊れているhi linksかクリアされていることに気付きましgroupsた:

リロード後に影響を受ける領域に注意してください:
(リロードとは、変更されたファイルを保存することを意味します。:waこの例では使用しています) リロード混乱!

解決

残念ながら、リストされた回答または私が試したオプションの組み合わせは、hiリロード後にグループを保持または復元しません。colorscheme <your-coloscheme>リロード後に手動で実行するとすべてが修正されますが、それを実行しても修正Vimscriptされません。
誰かがこの厄介な小さな問題の適切な解決策を共有してくれることを願っています.

醜いハック

vimrc のリロード:

私のvim構成ファイルに変更があった場合は、次を実行しreload.vimます:
.vimrc:

" .....
augroup reload_vimrc " {
    autocmd!
    autocmd BufWritePost ~/.vim/*.vim,~/.vim/vimrc source ~/.vim/reload.vim
augroup END " }

reload.vim: 壊れたリンクとクリアされたグループを復元します

私たちがしなければならないことは、hiソーシング後にグループを元に戻すことvimrcです。
影響を受ける領域の正しい値を見つけるには、たとえば、次のようSignColumnに入力します。
:hi SignColumn,リロードが発生する前。

結果は次のとおりです (xxxはプレビューです)。 hl SignColumn

影響を受けるすべての に対してこれを行う必要がありますhi
次のスニペットでは、最初にカラースキームSignColumnに合わせて修正していsolarizedます。
次に、いくつかのGitGutter色の問題を修正します。
たとえば、GitGutterAddへのリンクGitGutterAddDefaultは保存されていますが、からGitGutterAddDefaultへのリンクDiffAddが壊れているため、それを再インストールします。などなど。

リロード.vim:

source ~/.vim/vimrc

hi SignColumn ctermfg=12 ctermbg=0 guifg=Cyan guibg=Grey

" GitGutterAdd -> GitGutterAddDefault (preserved)
hi link GitGutterAddDefault DiffAdd

" GitGutterChange -> GitGutterChangeDefault (preserved)
hi GitGutterChangeDefault ctermfg=3 ctermbg=0 guifg=#bbbb00

" GitGutterDelete -> GitGutterDeleteDefault (preserved)
hi GitGutterDeleteDefault ctermfg=1 ctermbg=0 guifg=#ff2222

" GitGutterChangeDelete -> GitGutterChangeDefault (preserved)
" (which we already fixed above)

" Powerline highlight groups
" (see this attached Gist for solution)

すべてが正常に機能します。 こんにちはグループとリンクを修正

powerline-status色の修正:

これは少しトリッキーですが、原理は同じです。powerlineで始まるすべてのハイライト グループPl_。しかし、それらのいくつかはまだ存在していない可能性があります。たとえば、visualまだモードに入っていない場合、ビジュアル モードのそれぞれのグループはまだ設定されていません。したがって、insertvisual、およびnormalモードを入力して、グループにデータを入力してからコピーします。これらは、コマンドの出力の下部にありますhl。次に、それらをあなたに貼り付けて、reload.vim正当なコマンドになるように適応させhlます。

大変な作業のように聞こえるかもしれませんが、そうではありません。完全なの要点と、ガイドreload.vimとなるものをいくつか示します。gifs

于 2017-02-10T17:43:06.350 に答える
3

これとよく似たことがありました。これらが正しい順序であることを確認することで解決できました。

syntax on
let g:solarized_termtrans=1
let g:solarized_termcolors=256
set background=dark
colorscheme solarized

これもリロードに使った

augroup reload_vimrc
autocmd!
autocmd BufWritePost $MYVIMRC source $MYVIMRC
augroup END

これらの 2 つを使用すると、リロードせずに vimrc のライブ更新を行うことができました。ターミナルvimでiTerm2を使用しています。このライブリロードを機能させるためにかなりの時間を費やしてきたので、これが他の誰かの助けになることを願っています. また、ソラライズされたテーマの最新バージョンがあることを確認してください。言及するのは平凡に思えるかもしれませんが、違いがあるかもしれません。

于 2015-02-17T18:22:53.123 に答える
1

ハイライトはプラグインによって定義/変更されていると思います。を再実行すると、:colorschemeこれらの定義がリセットされます。プラグインは でColorSchemeイベントにフックする必要が:autocmdありますが、ほとんどのプラグインはフックしません。

これを回避する:colorschemeには、 をガードでラップしてみてください。

if ! exists('g:colors_name') || g:colors_name !=# 'Tomorrow-Night-Eighties'
    colorscheme Tomorrow-Night-Eighties
endif
于 2013-02-19T08:10:13.920 に答える