web-dev-qa-db-ja.com

vimdiffを使用するときに異なるカラースキームを読み込む

vimdiffを実行するときに異なるカラースキームをロードする方法。

私の現在のカラースキームは、vimdiff、Forでいくつかの差分を適切に表示しないため、これが必要です。例えば、いくつかの差分は同じfg/bg色で表示されます。これにより、diffを理解することが非常に難しくなります。そのため、vimdiffを実行するたびに、:colorscheme some_other_scheme

これは.vimrcファイル?

122
CodeRain

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

カラースキームを変更して、oneカラーのみをハイライトし(別のカラーを使用して行内の違いを示す)、すべての違いを作成しました。

enter image description here

colorscheme_screenshot

これを行うには、colorschemeファイル(~/.vim/colors/mycolorsheme)。

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オプションを設定しませんでした

143
Dean

私自身の質問に答えるには:

if &diff
    colorscheme evening
endif
46
CodeRain

私が見つけた最も簡単な方法は、このワンライナーを〜/ .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
17
Alan Thompson

判読できない配色(encounterいだけでなく、ピンク色の背景に白いテキストのように判読できない)が発生している場合、簡単な解決策は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色のスクリーンショット enter image description here

16色のスクリーンショット enter image description here

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

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

15
wisbucky

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

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

「通常」 enter image description here

「高」 enter image description here

「低」 enter image description here

9
mandrake

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

6
Dmitry Ershov

モロカイ: molokai color scheme github: github color scheme 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
5
iceblue

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

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

そして、結果が明らかな改善である場合、あなたの変更をあなたの配色の管理者にメールで送って、彼に問題を調べるように頼んでください。彼があなたの興味に感謝し、彼が他のユーザーにも利益をもたらすように彼の配色を修正する良いチャンスがあります。

5
guv'

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

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

Elseステートメントのある部分は重要です。これは、diffを行った後に以前の設定に戻る方法だからです。したがって、syntax offおよびsyntax onそれぞれのcolorschemeコマンド。このautocmdは、vimdiffを終了するときに設定を変更し、それを元に戻します(正確にはGdiffを使用しています)。

3
mostruash

私の現在のカラースキームでは、vimdiffでいくつかの差分が適切に表示されません。たとえば、同じfg/bg色でいくつかの差分が表示されます

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

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

:syntax off

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

if &diff
    syntax off
endif
2
wisbucky

ここで@deanおよびその他の回答を展開するには、これを.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
0
thouliha