A more convenient diff

Diff is a very useful tool. But it is not so easy to read for us, simple mortal.

This is why, when you use git it will use a better formatting and colorize it.

Here is the script I use when I want to use human readable diff à la git.

#!/usr/bin/env zsh

# Load colors helpers
autoload -U colors && colors

function colorize_diff {
    while read line; do
    case ${line[0]} in
    +) print -n $fg[green];;
    -) print -n $fg[red];;
    @) # Display in cyan the @@ positions @@
       if [[ ${line[1]} = '@' ]]; then
           line=$(print $line | perl -pe 's#(\@\@[^\@]*\@\@)(.*)$#'$fg[cyan]'$1'$reset_color'$2#')
       fi;;

    esac
        print -- $line
        print -n $reset_color
        done
}

diff -u $* | colorize_diff

Comments

comments powered by Disqus
Published on 2011-08-17
Follow @yogsototh
Yann Esposito©
Done with Vim & nanoc Hakyll