top - vimdiff use




Carregar colorscheme diferente ao usar vimdiff (8)

Como carregar um esquema de cores diferente ao fazer vimdiff .

Eu quero isso porque o meu colorscheme atual não mostra alguns diffs corretamente no vimdiff , For. por exemplo, algum diff é mostrado com a mesma cor fg / bg. Isso dificulta muito a compreensão do diff. Então toda vez que eu faço um vimdiff eu tenho que fazer :colorscheme some_other_scheme

Isso pode ser feito no arquivo .vimrc ?


meu atual esquema de cores não mostra alguns diffs corretamente em vimdiff, For. por exemplo, algum diff é mostrado com a mesma cor fg / bg

Na verdade, descobri que o principal culpado pela mesma cor fg / bg é o conflito entre o realce de sintaxe de código e o diff colorscheme. Você pode tentar alterar o diff colorscheme, mas pode ser um jogo de whack-a-mole quando você abre diferentes tipos de arquivo (com diferentes realces de sintaxe de código).

Uma solução segura é desabilitar o destaque da sintaxe no vimdiff. Você pode digitar:

:syntax off

Ou se você quiser fazer isto automaticamente todas as vezes, adicione isso ao final do seu ~/.vimrc :

if &diff
    syntax off
endif

Eu achei que a maneira mais fácil era colar este one-liner no meu arquivo ~ / .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

Eu uso o seguinte ao usar o vimdiff de dentro do vim:

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

A parte com a instrução else é importante porque é assim que você volta para sua configuração anterior depois de terminar o diff. Assim, você pode substituir a syntax off e a syntax on respectivos comandos colorscheme . Este autocmd manipula a alteração de uma configuração e a sua reversão ao encerrar o vimdiff (eu uso o Gdiff para ser preciso).


Molokai: github: Os dois temas github e molokai são igualmente belos.

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

Coloque o seguinte código no seu ~ / .vimrc, você pode escolher github ou molokai (uma linha começando com "é um comentário"):

if &diff
"   colorscheme github
    colorscheme molokai
endif

Para as pessoas que usam o excelente tema Solarized há uma opção que ativa a alta visibilidade para o modo diff:

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

"normal"

"Alto"

"baixo"


Para expandir em @dean e algumas outras respostas aqui, adicione isto ao seu .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

Se você está chamando vimdiff pela linha de comando, coloque o seguinte no seu .vimrc :

if &diff
    colorscheme some_other_scheme
endif

Se você estiver usando o vimdiff de dentro do vim, você terá que sobrescrever os comandos que você usa para iniciar / parar (por exemplo, diffoff , diffoff ) usando :cnoreabbr (também existe um plugin ) ou use um comando automático:

au FilterWritePre * if &diff | colorscheme xyz | endif

FilterWritePre é chamado antes de filtrar através de um programa externo (o utilitário diff) e a opção &diff é definida pelo vim quando entra no modo diff (entre outros, veja :help diff )

Eu não tenho certeza qual autocommand usar para retornar ao esquema de cores original embora.


Se você estiver encontrando esquemas de cores ilegíveis (não apenas feios, mas ilegíveis como texto branco em fundo rosa), uma correção fácil pode ser usar 16 cores em vez de 256 cores. Então você não precisa mexer nos esquemas de cores.

A razão é que o esquema de cores vimdiff padrão atribui DiffChange bg como "LightMagenta", que é mapeado para um rosa muito claro em 256 cores. Isso é ilegível com texto branco. Com 16 cores, o "LightMagenta" é mapeado para uma cor magenta em negrito, cujo texto em branco aparece muito melhor.

Você pode fazer um teste rápido, fazendo algo assim:

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

Captura de tela de 256 cores

Captura de tela de 16 cores

Como você pode ver, as 16 cores são muito mais legíveis, sem alterar o esquema de cores.

Para tornar esta permanente, você pode adicionar set t_Co=16 ao seu .vimrc





vimdiff