随笔-11  评论-10  文章-8  trackbacks-0
用惯了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/

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


posted on 2008-09-27 00:29 JBahamut 阅读(3456) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: