vimdiff
を実行するときに異なるカラースキームをロードする方法。
私の現在のカラースキームは、vimdiff
、Forでいくつかの差分を適切に表示しないため、これが必要です。例えば、いくつかの差分は同じfg/bg色で表示されます。これにより、diffを理解することが非常に難しくなります。そのため、vimdiff
を実行するたびに、:colorscheme some_other_scheme
これは.vimrc
ファイル?
なぜvimがハイライトに多くの色を使用するのかはわかりませんが、何が起こっているのかを理解するのに役立ちません。
カラースキームを変更して、oneカラーのみをハイライトし(別のカラーを使用して行内の違いを示す)、すべての違いを作成しました。
これを行うには、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オプションを設定しませんでした
私自身の質問に答えるには:
if &diff
colorscheme evening
endif
私が見つけた最も簡単な方法は、このワンライナーを〜/ .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
判読できない配色(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
ご覧のとおり、配色を変更することなく、16色がはるかに読みやすくなっています。
これを永続的にするには、set t_Co=16
あなたの.vimrc
非常に優れた Solarized テーマを使用している人には、diffモードの高い可視性をオンにするオプションがあります。
" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
/etc/vim/vimrc
または ~/.vimrc
:編集領域と構文の強調表示で暗い背景を使用している場合、このオプションもオンにしますset background=dark
モロカイ: 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
別のアプローチは、その配色を修正することです。
私の知る限り、通常、diffingに関連する4つのハイライトグループ、DiffAdd、DiffChange、DiffDelete、およびDiffTextがあります。構文やお好みに合わせて色を調整したくない場合は、デフォルトの配色を別の名前で〜/ .vim/colorsにコピーしてください(存在しない場合はディレクトリを作成します)。コピー:対応する:hiコマンドを代替カラースキームから新しいカスタムカラースキームの最後に貼り付け、オプションでその中の他のdiff関連のステートメントをコメントアウトします。
そして、結果が明らかな改善である場合、あなたの変更をあなたの配色の管理者にメールで送って、彼に問題を調べるように頼んでください。彼があなたの興味に感謝し、彼が他のユーザーにも利益をもたらすように彼の配色を修正する良いチャンスがあります。
Vim内からvimdiffを使用する場合、以下を使用します。
au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif
Elseステートメントのある部分は重要です。これは、diffを行った後に以前の設定に戻る方法だからです。したがって、syntax off
およびsyntax on
それぞれのcolorscheme
コマンド。このautocmdは、vimdiffを終了するときに設定を変更し、それを元に戻します(正確にはGdiff
を使用しています)。
私の現在のカラースキームでは、vimdiffでいくつかの差分が適切に表示されません。たとえば、同じfg/bg色でいくつかの差分が表示されます
実際、同じfg/bgカラーの主な原因は、コード構文の強調表示とdiffカラースキームの競合が原因であることがわかりました。 diffカラースキームを変更することもできますが、異なるファイルタイプ(異なるコード構文の強調表示)を開いたときに、モグラたたきのゲームになる場合があります。
確実な解決策は、vimdiffで構文の強調表示を無効にすることです。次のいずれかを入力できます。
:syntax off
または、毎回これを自動的に行う場合は、~/.vimrc
の最後にこれを追加します。
if &diff
syntax off
endif
ここで@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