Mudar a semântica do comando diff
de fato causa estragos no Vim (isso é explicado em :help diff-diffexpr
: A saída de "diff" deve ser um estilo "ed" normal. NÃO use um contexto diff. ), e potencialmente outros programas também.
Um alias de shell puro com o mesmo nome é bom, já que isso é considerado apenas quando você digita comandos interativamente (ou em funções de shell, das quais você deve ter poucos). Se você precisar de um comando diff alterado para uso não interativo (por exemplo, no comando :!
do Vim), defina melhor um script wrapper shell / função / alias do shell exportado em .zshenv
sob um nome diferente . por exemplo diffu
.
Se você realmente deseja se ater a um alias idêntico e exportado (apesar dos riscos de quebrar programas), é necessário reconfigurar o Vim para que não o use. Infelizmente, não existe uma opção simples para o executável do diff; você tem que escrever um inteiro personalizado 'diffexpr'
. Felizmente, há um exemplo disso em :help diff-diffexpr
que emula o padrão. Você só precisa de uma pequena alteração para evitar o alias de diferenças, por exemplo, por especificando o caminho completo para diferenciar .
set diffexpr=MyDiff()
function MyDiff()
let opt = ""
if &diffopt =~ "icase"
let opt = opt . "-i "
endif
if &diffopt =~ "iwhite"
let opt = opt . "-b "
endif
silent execute "!/usr/bin/diff -a --binary " . opt . v:fname_in . " " . v:fname_new .
\ " > " . v:fname_out
endfunction