164

を行うときに別の配色をロードする方法vimdiff

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

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

4

13 に答える 13

198

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

于 2013-06-19T05:18:36.380 に答える
139

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) 。

ただし、元の配色に戻すためにどの自動コマンドを使用するかはわかりません。

于 2010-01-07T09:51:55.827 に答える
75

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

if &diff
    colorscheme evening
endif
于 2010-01-07T09:59:59.883 に答える
24

最も簡単な方法は、このワンライナーを〜/.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
于 2012-11-13T23:56:43.203 に答える
23

判読できない配色(醜いだけでなく、ピンクの背景に白いテキストのように判読できない)が発生した場合、簡単な解決策は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

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

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

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

これを永続的にするために、あなたはあなたに追加set t_Co=16することができます.vimrc

于 2016-02-27T22:32:57.787 に答える
22

molokai: モロカイの配色 github: 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
于 2018-11-03T11:02:12.130 に答える
14

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

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

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

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

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

于 2015-07-13T11:35:52.827 に答える
8

私の現在の配色は、vimdiff、Forでいくつかの差分を正しく表示しません。たとえば、一部の差分は同じfg/bgカラーで表示されます

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

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

:syntax off

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

if &diff
    syntax off
endif
于 2018-03-02T01:19:52.020 に答える
7

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

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

結果が明らかに改善された場合は、変更内容を配色の管理者に電子メールで送信し、問題を調査するように依頼します。彼があなたの興味に感謝し、他のユーザーも恩恵を受けるように彼の配色を修正する可能性は十分にあります。

于 2012-07-21T16:34:42.633 に答える
7

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

于 2014-06-07T15:13:32.337 に答える
7

@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
于 2019-04-04T19:10:46.130 に答える
3

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

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

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

于 2016-08-16T09:39:46.230 に答える
0

どの解決策も私にはうまくいきませんでした。チェックを使用したとき、(プラグインから) if &diffdiffを開いた後に構成をリソース化した場合にのみ機能していました。自動的に開かなかった。さらに、差分ペインを終了した後、元の配色に戻すためのリソースが必要でした。したがって、必要な配色をアクティブにするカスタムマップを作成することになりました。:Gdifffugitive.vim

map ,m :colorscheme molokai<CR>
map ,c :colorscheme PaperColor<CR>
map ,g :colorscheme gruvbox<CR>

これまでのところ、これは私が見つけた最も有望な解決策ですが、それは少しハックであり、配色が自動的に変更されれば私はそれが好きでした。ただし、このようにすると、差分ウィンドウにいるかどうかに関係なく、暇なときに任意の配色をすばやく適用できます。

于 2021-02-15T06:10:16.260 に答える