回答:
vimdiff
コマンドラインから呼び出す場合は、次のコードをに入れます.vimrc
。
if &diff
colorscheme some_other_scheme
endif
あなたはvimの中からはvimdiffを使用している場合、あなたはどちらかあなたが開始するために使用するコマンドを上書きする必要があるだろう/それを(例えば停止diffthis
、diffoff
使用して):cnoreabbr
(もありますプラグイン)または自動コマンドを使用します。
au FilterWritePre * if &diff | colorscheme xyz | endif
FilterWritePreは、外部プログラム(diffユーティリティ)でフィルタリングする前に呼び出され、&diff
-optionは、diff-modeになるときにvimによって設定されます(特に、を参照:help diff
)。
ただし、元のカラースキームに戻るためにどのオートコマンドを使用するかわかりません。
;
あなただけの新しい「行」を追加することができますので、シェルスクリプトで:if &diff | colorscheme xyz | cmd2 | cmd3 | endif
colorscheme some_other_scheme
はランタイムパスを調べますcolor/some_other_scheme.vim
。:set runtimepath?
vim内からランタイムパスを確認できます。
vimがハイライトに多くの色を使用する理由がわかりません。何が起こっているのかを理解するのに役立ちません。
カラースキームを変更して、強調表示に1つの色のみを使用し(別の色を使用して、ライン内のどこに違いがあるかを示します)、すべての違いを作り出しました。
これを行うには、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行を〜/ .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
Todo
代わりに選びましたMatchParen
。
判読不能な配色(醜いだけでなく、ピンク色の背景の白いテキストのような判読不能)が発生した場合、簡単な解決策は、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
ご覧のとおり、16の色は、配色を変更することなく、はるかに読みやすくなっています。
これを永続的にするset t_Co=16
には、.vimrc
t_Co
が8に設定され、set t_Co=256
読みやすさが大幅に向上しました。
molokai: 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
非常に優れたSolarizedテーマを使用している人のために、差分モードで高い可視性をオンにするオプションがあります。
" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
私の現在のcolorchemeは、vimdiffで一部の差分を正しく表示しません。たとえば、一部の差分は同じfg / bg色で表示されます
実際、同じfg / bg色の主な原因は、コード構文の強調表示とdiffのcolorchemeの間の競合が原因であることがわかりました。異なるカラースキームを変更しようとすることはできますが、異なるファイルタイプ(異なるコード構文の強調表示で)を開くと、モグラのゲームのようになるかもしれません。
確実な解決策は、vimdiffで構文の強調表示を無効にすることです。次のいずれかを入力できます。
:syntax off
または、毎回これを自動的に行う場合は、これをの最後に追加します~/.vimrc
。
if &diff
syntax off
endif
別のアプローチは、その配色を修正することです。
私の知る限り、通常、diffAdding、DiffChange、DiffDelete、DiffTextの4つのハイライトグループがあります。構文や色を好みに合わせて調整したくない場合は、デフォルトの配色を別の名前で〜/ .vim / colorsにコピーします(存在しない場合はディレクトリを作成します)。対応する:hiコマンドを代替の配色から新しいカスタムの配色の末尾にコピーして貼り付け、オプションでその中の他のdiff関連のステートメントをコメント化します。
結果が明らかな改善である場合は、変更を含む配色のメンテナーにメールを送信し、問題を調査するように依頼してください。彼があなたの興味に感謝し、彼の配色を修正して他のユーザーにも利益がもたらされる可能性は十分にあります。
/etc/vim/vimrc
または~/.vimrc
:編集領域内の暗い背景と構文の強調表示を使用している場合は、このオプションもオンにしますset background=dark
vim内からvimdiffを使用する場合、以下を使用します。
au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif
elseステートメントのある部分は重要です。これは、diff'ingが完了した後に、以前の構成に戻る方法だからです。したがって、それぞれのコマンドを置き換えsyntax off
たりsyntax on
、置き換えたりすることができcolorscheme
ます。このautocmdは、vimdiffを終了するときに設定の変更と元に戻す処理を行います(私はGdiff
正確に言うと)。
ここで@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