vimdiffを使用するときに異なるカラースキームをロードする


137

実行時に別のカラースキームをロードする方法vimdiff

私の現在のカラースキームではvimdiff、For でいくつかの差分が正しく表示されないため、これが必要です。たとえば、一部のdiffは同じfg / bgカラーで表示されます。このため、差分を理解するのが非常に難しくなります。だから私はするたびにvimdiff私はしなければなりません:colorscheme some_other_scheme

これは.vimrcファイルで行うことができますか?

回答:


118

vimdiffコマンドラインから呼び出す場合は、次のコードをに入れます.vimrc

if &diff
    colorscheme some_other_scheme
endif

あなたはvimの中からはvimdiffを使用している場合、あなたはどちらかあなたが開始するために使用するコマンドを上書きする必要があるだろう/それを(例えば停止diffthisdiffoff使用して):cnoreabbr(もありますプラグイン)または自動コマンドを使用します。

au FilterWritePre * if &diff | colorscheme xyz | endif

FilterWritePreは、外部プログラム(diffユーティリティ)でフィルタリングする前に呼び出され、&diff-optionは、diff-modeになるときにvimによって設定されます(特に、を参照:help diff)。

ただし、元のカラースキームに戻るためにどのオートコマンドを使用するかわかりません。


2つのパイプ "|"間で複数のコマンドを呼び出すことはできますか?私は...あまりにもVIMからはvimdiffを使用した後、元のカラースキームへの復帰に興味がある
誰かがまだあなたにMS-DOS使用しています

1
パイプは改行のためsubstitues、類似していると;あなただけの新しい「行」を追加することができますので、シェルスクリプトで:if &diff | colorscheme xyz | cmd2 | cmd3 | endif
DataWraith

1
colorscheme some_other_schemeはランタイムパスを調べますcolor/some_other_scheme.vim:set runtimepath?vim内からランタイムパスを確認できます。
パボ

1
(私のような)コンソールユーザーの場合、強調表示されたdiffと強調表示された構文の間のコントラストを維持するために、少なくともシェルスクリプトでは 'vividchalk'が(既定のインストールセットから)最高のカラースキームであることがわかりました。近い秒は「夜」でした。お役に立てば幸いです。
コンラッドマイヤー

私の問題は常に、構文の強調表示とのコントラストの欠如です。これは、差分カラーリングでテキストのチャンク全体を失うことです。私は過去に必要に応じて ':syntax off'を使用しましたが、それを.vimrcの 'if&diff'述語に追加して、いくつかのキーストロークを保存しました
qneill

166

vimがハイライトに多くの色を使用する理由がわかりません。何が起こっているのかを理解するのに役立ちません。

カラースキームを変更して、強調表示に1つの色のみを使用し(別の色を使用して、ライン内のどこに違いがあるかを示します)、すべての違いを作り出しました。

ここに画像の説明を入力してください

colorscheme_screenshot

これを行うには、colorschemeファイルの最後に以下を追加します(~/.vim/colors/mycolorscheme.vim)。

highlight DiffAdd    cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
highlight DiffText   cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red
  • cterm -スタイルを設定します
  • ctermfg -テキストの色を設定します
  • ctermbg -ハイライトを設定します
  • DiffAdd -行が追加されました
  • DiffDelete -行が削除されました
  • DiffChange -行の一部が変更されました(行全体が強調表示されます)
  • DiffText -変更された行の正確な部分

このリンクを色番号の参照として使用しました。

注:macvim / gvimに別のカラースキームを使用しているため、GUIオプションを設定していません


1
ありがとう!これははるかに良く見えます!
vitaluha 2014年

4
パボが別のコメントで言ったように、末尾に.vim拡張子を付けてmycolorscheme.vimのようにカラースキームファイルに名前を付ける必要がある場合があります。
David Winiecki 2015年

ありがとう!マイナーニット:誤ってすべての「ギブ」を赤にしたと思います。DiffText用と残りの2色の2色を使用するつもりでしたか?
Kapil Arya

6
数値(ctermbg = 17)を使用すると色が機能しないのに、単語(ctermbg = blue)を使用すると機能するのはなぜですか?..解決策:端末の色は8色1-7のみ
Ricky Levi

3
iTerm2を使用するMacOS。私が何をしたにせよ、私は得ました:配色 '〜/ .vim / colors / mycolorscheme'が見つかりません〜/ .vimrcの「if&diff」ステートメントの間にカラーコードを直接コピーすることでうまくいきました。
Tony Barganski、


22

最も簡単な方法は、この1行を〜/ .vimrcファイルに貼り付けることです。

" Fix the difficult-to-read default setting for diff text highlighting.  The
" bang (!) is required since we are overwriting the DiffText setting. The highlighting
" for "Todo" also looks nice (yellow) if you don't like the "MatchParen" colors.
highlight! link DiffText MatchParen

3
素晴らしい解決策!目立つのでTodo代わりに選びましたMatchParen
MihaiCapotă2013

18

判読不能な配色(醜いだけでなく、ピンク色の背景の白いテキストのような判読不能)が発生した場合、簡単な解決策は、256色ではなく16色を使用することです。その後、配色をいじる必要はありません。

その理由は、デフォルトのvimdiffカラースキームDiffChange bgが「LightMagenta」として割り当てられ、256色の非常に明るいピンクにマッピングされるためです。それは白いテキストでは読めません。16色の場合、「LightMagenta」はボールドマゼンタにマッピングされ、白いテキストの方がよく見えます。

次のようなことを行うと、簡単なテストを行うことができます。

vimdiff <file1> <file2>
:set t_Co?    " print current setting (256 by default)
:highlight    " print highlighting scheme
:set t_Co=16  " set to 16 colors
:highlight    " print highlighting scheme

256色のスクリーンショット ここに画像の説明を入力してください

16色のスクリーンショット ここに画像の説明を入力してください

ご覧のとおり、16の色は、配色を変更することなく、はるかに読みやすくなっています。

これを永続的にするset t_Co=16には、.vimrc


2
私の場合は逆でしたが、このヒントをたくさんありがとう。t_Coが8に設定され、set t_Co=256読みやすさが大幅に向上しました。
Olaf Dietsche

11

molokai: モロカイ配色 github: github配色 2つのテーマgithubとmolokaiは同じように美しいです。

curl -fLo ~/.vim/colors/molokai.vim --create-dirs https://raw.githubusercontent.com/tomasr/molokai/master/colors/molokai.vim
curl -fLo ~/.vim/colors/github.vim --create-dirs https://raw.githubusercontent.com/endel/vim-github-colorscheme/master/colors/github.vim

〜/ .vimrcに次のコードを挿入します。githubまたはmolokaiを選択できます( "で始まる行はコメントです):

if &diff
"   colorscheme github
    colorscheme molokai
endif

この古い問題に対する私のお気に入りの解決策!
Stabledog

10

非常に優れたSolarizedテーマを使用している人のために、差分モードで高い可視性をオンにするオプションがあります。

" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"

"正常" ここに画像の説明を入力してください

"高い" ここに画像の説明を入力してください

「低い」 ここに画像の説明を入力してください


1
あなたはこれが作る違いのスクリーンショットをたまたま持っていないでしょうか?
Victor Zamanian 2017年

7

私の現在のcolorchemeは、vimdiffで一部の差分を正しく表示しません。たとえば、一部の差分は同じfg / bg色で表示されます

実際、同じfg / bg色の主な原因は、コード構文の強調表示とdiffのcolorchemeの間の競合が原因であることがわかりました。異なるカラースキームを変更しようとすることはできますが、異なるファイルタイプ(異なるコード構文の強調表示で)を開くと、モグラのゲームのようになるかもしれません。

確実な解決策は、vimdiffで構文の強調表示を無効にすることです。次のいずれかを入力できます。

:syntax off

または、毎回これを自動的に行う場合は、これをの最後に追加します~/.vimrc

if &diff
    syntax off
endif

6

別のアプローチは、その配色を修正することです。

私の知る限り、通常、diffAdding、DiffChange、DiffDelete、DiffTextの4つのハイライトグループがあります。構文や色を好みに合わせて調整したくない場合は、デフォルトの配色を別の名前で〜/ .vim / colorsにコピーします(存在しない場合はディレクトリを作成します)。対応する:hiコマンドを代替の配色から新しいカスタムの配色の末尾にコピーして貼り付け、オプションでその中の他のdiff関連のステートメントをコメント化します。

結果が明らかな改善である場合は、変更を含む配色のメンテナーにメールを送信し、問題を調査するように依頼してください。彼があなたの興味に感謝し、彼の配色を修正して他のユーザーにも利益がもたらされる可能性は十分にあります。


vim開発者は、デフォルトのカラースキームが暗い背景でどのように表示されるかについて、多くの不満や提案を受け取っていますが、残念ながらこれはまだ修正されていません。
Stefan Lasiewski、2015年

6

/etc/vim/vimrcまたは~/.vimrc:編集領域内の暗い背景と構文の強調表示を使用している場合は、このオプションもオンにしますset background=dark


3

vim内からvimdiffを使用する場合、以下を使用します。

au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif

elseステートメントのある部分は重要です。これは、diff'ingが完了した後に、以前の構成に戻る方法だからです。したがって、それぞれのコマンドを置き換えsyntax offたりsyntax on、置き換えたりすることができcolorschemeます。このautocmdは、vimdiffを終了するときに設定の変更と元に戻す処理を行います(私はGdiff正確に言うと)。


3

ここで@deanと他のいくつかの回答を拡張するには、これをyourに追加します.vimrc

if &diff
  " colorscheme evening
  highlight DiffAdd    cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
  highlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
  highlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
  highlight DiffText   cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red
endif
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.