coloring diff

coloring diff
用惯了git觉得没有颜色的diff实在是无法忍受,还好emacs可以配置diff-mode的颜色,但svn diff却没有发现有参数可以指定highlight diff的,于是自己写了一个。是一个bash脚本,用到了sed,linux下肯定没有问题;windows下需要装MinGW的bash,sed还有msys


#!/bin/sh

case 
" $TERM "  in
msys)
CONTEXT_COLOR
= "  "
ADD_COLOR
= "  "
DELETE_COLOR
= "  "
LOCATION_COLOR
= "  "
INDEX_COLOR
= "  "
NORM_COLOR
= "  "
; ;
*)
CONTEXT_COLOR
= `tput setaf  7 `
ADD_COLOR
= `tput setaf  2 `
DELETE_COLOR
= `tput setaf  1 `
LOCATION_COLOR
= `tput setaf  6 `
INDEX_COLOR
= `tput setaf  5 `
NORM_COLOR
= `tput sgr0`
; ;
esac

svn diff $* |
sed -e 
" s/^+.*/${ADD_COLOR}&${NORM_COLOR}/g "  -e  " s/^-.*/${DELETE_COLOR}&${NORM_COLOR}/g "  \
    -e 
" s/^@@.*/${LOCATION_COLOR}&${NORM_COLOR}/g "  -e  " s/^[iI]ndex.*/${INDEX_COLOR}&${NORM_COLOR}/g "  \
    -e 
" s/.*/${CONTEXT_COLOR}&${NORM_COLOR}/g "  |
${PAGER:-less -QRS}

由于windows上没有tput方法所以只能直接写操作字符,上面方块的字符可以通过下面命令将结果输出到文件得到
echo -e  " \033[31mtest "  > out

tput setbf [0-7] 可以用来设置背景颜色。这有有颜色的代码:
http://www.frexx.de/xterm-256-notes/

贴上来的代码中有特殊字符,貌似被解析成奇怪的东西了,可以点击 这里下载


你可能感兴趣的:(coloring diff)