を行うときに別の配色をロードする方法vimdiff
。
私の現在の配色ではvimdiff
、Forでいくつかの差分が正しく表示されないため、これが必要です。たとえば、一部の差分は同じfg/bgカラーで表示されます。これにより、差分を理解するのが非常に難しくなります。だから私がするたびに私vimdiff
はしなければならない:colorscheme some_other_scheme
これはファイルで行うことができ.vimrc
ますか?
なぜ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オプションを設定しませんでした
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モードに入るときにvimによって設定されます(特に、を参照:help diff
) 。
ただし、元の配色に戻すためにどの自動コマンドを使用するかはわかりません。
私自身の質問に答えるには:
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
判読できない配色(醜いだけでなく、ピンクの背景に白いテキストのように判読できない)が発生した場合、簡単な解決策は256色ではなく16色を使用することです。そうすれば、配色をいじる必要はありません。
その理由は、デフォルトのvimdiff配色DiffChange bg
が「LightMagenta」として割り当てられ、256色の非常に明るいピンクにマッピングされるためです。それは白いテキストでは読めません。16色の「ライトマゼンタ」は、太字のマゼンタにマッピングされており、白いテキストがよりよく表示されます。
次のようなことを行うことで、簡単なテストを行うことができます。
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
molokai:
github:
githubとmolokaiの2つのテーマは同じように美しいです。
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テーマを使用する人のために、diffモードの高い視認性をオンにするオプションがあります。
" ~/vim.rc
" Set high visibility for diff mode
let g:solarized_diffmode="high"
私の現在の配色は、vimdiff、Forでいくつかの差分を正しく表示しません。たとえば、一部の差分は同じfg/bgカラーで表示されます
実際、同じfg / bgカラーの主な原因は、コード構文の強調表示とdiffカラースキームの競合が原因であることがわかりました。差分の配色を変更することもできますが、さまざまなファイルタイプ(さまざまなコード構文の強調表示)を開くと、モグラたたきのゲームになる可能性があります。
確実な解決策は、vimdiffで構文の強調表示を無効にすることです。次のいずれかを入力できます。
:syntax off
または、毎回これを自動的に実行したい場合は、これを:の最後に追加します~/.vimrc
。
if &diff
syntax off
endif
別のアプローチは、その配色を修正することです。
私の知る限り、通常、差分に関連する4つのハイライトグループがあります。DiffAdd、DiffChange、DiffDelete、およびDiffTextです。構文に煩わされたり、好みに合わせて色を調整したりしたくない場合は、デフォルトの配色を別の名前で〜/ .vim / songsにコピーして(ディレクトリが存在しない場合はディレクトリを作成してください)、対応する:hiコマンドを別の配色から新しいカスタム配色の最後にコピーして貼り付け、オプションで他の差分関連のステートメントをコメントアウトします。
結果が明らかに改善された場合は、変更内容を配色の管理者に電子メールで送信し、問題を調査するように依頼します。彼があなたの興味に感謝し、他のユーザーも恩恵を受けるように彼の配色を修正する可能性は十分にあります。
/etc/vim/vimrc
または~/.vimrc
:編集領域と構文の強調表示内で暗い背景を使用している場合は、このオプションもオンにしますset background=dark
@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
vim内からvimdiffを使用する場合は、次を使用します。
au BufEnter,BufNew * if &diff | syntax off | else | syntax on | endif
elseステートメントのある部分は重要です。これは、差分が完了した後、以前の構成に戻る方法だからです。syntax off
したがって、およびsyntax on
をそれぞれのコマンドに置き換えることができcolorscheme
ます。このautocmdは、vimdiffを終了するときに設定の変更と元に戻すことを処理します(Gdiff
正確には使用します)。
どの解決策も私にはうまくいきませんでした。チェックを使用したとき、(プラグインから) if &diff
diffを開いた後に構成をリソース化した場合にのみ機能していました。自動的に開かなかった。さらに、差分ペインを終了した後、元の配色に戻すためのリソースが必要でした。したがって、必要な配色をアクティブにするカスタムマップを作成することになりました。:Gdiff
fugitive.vim
map ,m :colorscheme molokai<CR>
map ,c :colorscheme PaperColor<CR>
map ,g :colorscheme gruvbox<CR>
これまでのところ、これは私が見つけた最も有望な解決策ですが、それは少しハックであり、配色が自動的に変更されれば私はそれが好きでした。ただし、このようにすると、差分ウィンドウにいるかどうかに関係なく、暇なときに任意の配色をすばやく適用できます。