用慣了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 閱讀(3469)
評論(0) 編輯 收藏