用惯了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="[37m"
ADD_COLOR="[32m"
DELETE_COLOR="[31m"
LOCATION_COLOR="[36m"
INDEX_COLOR="[35m"
NORM_COLOR="[0m"
;;
*)
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/
贴上来的代码中有特殊字符,貌似被解析成奇怪的东西了,可以点击
这里下载
posted on 2008-09-27 00:29
JBahamut 阅读(3465)
评论(0) 编辑 收藏