Thursday, September 15, 2011

[转载] 终端软件的选择:rxvt-unicode

原文地址:http://forum.ubuntu.org.cn/viewtopic.php?t=66302&highlight=rxvt-unicode

为什么是rxvt-uicode

终端软件有很多,gnome有gnome terminal,kde有konsole,还有xfce-terminal,xterm,rxvt, aterm, eterm等等,这里我选择的是rxvt-unicode。主要因为我们所需要的终端,需要具有以下的特性:
  • 快速(rxvt-unicode基于rxvt,rxvt基于xterm,xterm的快速是毋庸置疑的);
  • 支持utf8,否则不能正确显示简体和繁体中文(从rxvt-unicode的名字就可以看出来了);
  • 易配置,更换系统时只需要保留配置文件就能恢复(rxvt-unicode配置可以写在~/.Xdefaults或者~/.Xresources中);
  • 支持透明,因为我们需要eyecandy来防止审美疲劳(rxvt-unicode不光支持伪透明,也可以做到真透明,不过我没有试过)。

符合上面条件的,以我所知,就只有rxvt-unicode(如果我错了请纠正我)。除了这些特性,rxvt-unicode还具有以下特性:
  • 可以以server/client模式启动,更加节省系统资源(urxvtcd);
  • 显示彩色man page。


rxvt-unicode的配置

代码:
Xft.dpi:96
!! RXVT-unicode setting
URxvt.geometry:             80x36+80+80
URxvt.background:           black
URxvt.foreground:           white
URxvt.scrollBar:            False
URxvt.scrollstyle:          next
! Use shift+pageup/down to scroll in screen
URxvt.secondaryScroll:  True
!set the artificial transparency of the v.t.
URxvt.inheritPixmap:        True
URxvt.tintColor:            grey
URxvt.shading:              500
URxvt.saveLines:            1500
URxvt.preeditType:          Root
URxvt.borderLess:           False
URxvt.title:                roylez's urxvt
!italicFont and boldItalicFont undefined
URxvt.font:-*-fixed-medium-r-*-*-15-*-*-*-*-*-*-*,\
xft:wenquanyi bitmap song:medium:pixelsize=15:antialias=False
URxvt.boldFont:-*-fixed-bold-r-*-*-15-*-*-*-*-*-*-*,\
xft:wenquanyi bitmap song:bold:pixelsize=15:antialias=False
!URxvt.font:xft:terminus:medium:size=13:antialias=false,\
!xft:wenquanyi bitmap song:medium:pixelsize=13:antialias=False

!redefine color to use tango theme in vim
!Black
URxvt.color0:           #000000
URxvt.color8:           #555753
!Red
URxvt.color1:           #CC0000
URxvt.color9:           #EF2929
!Green
URxvt.color2:           #4E9A06
URxvt.color10:          #8AE234
!Yellow
URxvt.color3:           #C4A000
URxvt.color11:          #FCE94F
!Blue
URxvt.color4:           #3465A4
URxvt.color12:          #729FCF
!Magenta
URxvt.color5:           #75507B
URxvt.color13:          #AD7FA8
!Cyan
URxvt.color6:           #06989A
URxvt.color14:          #34E2E2
!White
URxvt.color7:           #D3D7CF
URxvt.color15:          #EEEEEC


这个配置中有几个地方需要说明一下。

1 字体配置。

字体使用了fixed和文泉驿的组合,两个都是点阵字体。使用点阵字体的好处首先是快,然后就是够sharp。Truetype字体在大字号确实比较好看,但是在终端显示方面,效果明显不如点阵来得美观。

可 惜的是,适合中文的点阵字体实在不多。有个unifont ,不过我没有尝试过。文泉驿是个不错的选择,简体繁体都不错,可惜没有楷体和斜体,所以我没有定义Urxvt.italicFont。但是文泉驿的英文字 型不适合终端显示,扩展ascii的字符部分尤其差,所以一定要搭配一个合适的英文字型。这里我用的是misc-fixed,如果你愿意用更小的字型,你 可以尝试terminus。

图片

2 颜色配置。

可以看出,我把rxvt里面的颜色重新定义了,定义成了tango风格配色,在vim中搭配tango.vim,可以达到很好的效果。tango.vim可以在这里下载。这是我对tango.vim进行了小小修改之后的效果。

图片

Shell配置


shell的选择

我的选择是zsh,因为它的补全功能很贴心,而且我特别喜欢它的walters提示符。如果用bash,bash_completion是一定要装的。

定义更多的ls颜色

大家也许注意到了,ls有颜色显示,是因为有这样一个alias的存在的缘故
代码:
alias ls='ls --color=auto -X'


我喜欢把自己常用的文件种类都加上颜色,怎么做呢?首先,把默认的颜色配置输出为.lscolor
代码:
dircolors -p ~/.lscolor


然后,在.bashrc/.zshrc里面ls的alias前面加上这么一句,以后需要添加新的文件种类,编辑.lscolor就是了。
代码:
eval '`dircolors -b $HOME/.lscolor`'


有用的alias

在.bashrc或者.zshrc里面加入下列alias,可以实现彩色grep,df/du的时候用K/M显示大小,用del命令把文件删除到gnome回收站。用smth上newsmth.org,用hkday上hkday.net,而且发帖不会乱码。
代码:
alias grep='grep --color=always'
alias less='less -R'
alias df='df -Th'
alias du='du -h'
del() {mv -vi -- $* ~/.Trash}
alias smth='luit -encoding gbk -- telnet newsmth.org'
alias hkday='luit -encoding big5 -- telnet hkday.net'

图片

必不可少的screen


什么是screen

screen 这个名字老实说起得很有误导作用,它代表的是一个叫做gnu screen的软件。这个软件的主要作用说简单了,就是给你的终端添加tab的功能。也许你会问,为什么不用gnome- terminal/console/mlterm之类本身就有tab功能的终端呢?为什么不用fluxbox的标题栏tab功能呢?原因很简单,在ssh 或者telnet远程登录的时候,能够让你还能使用tab的,只有screen!
图片

screen的配置
代码:
# 这是配置那个tab bar
hardstatus alwayslastline
hardstatus string '%{=b}%{b}%-w%{.BW}%10>[%n %t]%{-}%+w%< %=%{G}%C%A, %Y-%m-%d'

termcapinfo xterm|rxvt ti@:te@

# screen里面的所有进程退出,screen就自动退出
autodetach on               # default: on

# 退出vim/nano之后自动刷新屏幕
altscreen on

# 启动等待,显示版本
msgwait 2
version
# 启动信息
startup_message off # default: on

# 启用beep报错
vbell off

# 默认的shell,不设置的话就是bash
shell zsh

##    Keybindings    ##

# F10改标题
bindkey -k k; title
# F11左边的tab
bindkey -k F1 prev
# F12右边的tab
bindkey -k F2 next


我没有给开新的tab(screen)一个快捷键,因为我觉得无论是敲screen还是ctrl+a
ctrl+c都不是很麻烦。

换个encoding上bbs

screen 可以动态更改encoding,比如想上繁体bbs,只需要依此敲入ctrl+a :encoding big5,然后telnet到你想要上的bbs就行啦。再次看出文泉驿的好处,繁体字都能显示^_^。当然,这样上bbs不如用luit的alias来得 方便。
图片

给特定程序绑个tab

如果你经常用mutt/irssi,或者上某个bbs,可以在screenrc里面加这样几句
代码:
bind 'm' screen -t email mutt
bind 'i' screen -t chat irssi
bind 's' screen -t smth luit -encoding gbk -- telnet newsmth.org


不过我更加倾向于直接在bashrc/zshrc里面用alias
代码:
alias mutt='screen -t email mutt'


代码:
_______________________
< 是不是应该给点掌声? >
-----------------------
        \   ^__^
          \ (oo)\_______
            (__)\          )\/\
                  ||----w |
                  ||        ||

1 comment:

Unknown said...

为什么是 bind -k F1 prev 对应 F11 呢?