美观实用的中文终端环境配置

系统字体配置、中文显示和输入法问题
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

美观实用的中文终端环境配置

#1

帖子 roylez » 2007-07-26 13:53

终端软件的选择: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 |
                  ||        ||
上次由 roylez 在 2007-07-27 14:35,总共编辑 2 次。
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
头像
rhfcaesar
帖子: 2996
注册时间: 2005-11-17 15:45
来自: 湖北

#2

帖子 rhfcaesar » 2007-07-26 14:08

非常好!学习了!不过mlterm也是个不错的选择,rxvt的功能都能实现。
andrew_t
帖子: 614
注册时间: 2006-12-14 3:00

#3

帖子 andrew_t » 2007-08-10 17:00

mark
不过我这怎么帖子里面的图片都显示不出来?
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

#4

帖子 roylez » 2007-08-10 17:49

`````````````
上次由 roylez 在 2008-01-14 22:12,总共编辑 1 次。
头像
dogfox
论坛版主
帖子: 5311
注册时间: 2006-09-02 14:18
来自: 汉桑城
联系:

#5

帖子 dogfox » 2007-08-10 21:26

roylez 写了:图片
真好
没有
哈哈
上次由 dogfox 在 2008-01-14 22:13,总共编辑 1 次。
全世界linux爱好者联合起来 !
头像
BigSnake.NET
帖子: 12522
注册时间: 2006-07-02 11:16
来自: 廣州
联系:

#6

帖子 BigSnake.NET » 2007-08-11 13:47

图片

rxvt-unicode 中的 irssi

.Xresources

代码: 全选

rxvt.scrollBar:       False
rxvt.geometry:        80x32
rxvt.font:            xft:DejaVu Sans Mono:size=9,xft:NSimsun:size=12
rxvt.background:      black
rxvt.foreground:      white
rxvt.cursorBlink:     true
rxvt.color12:         #AAAAFF
rxvt.cursorColor:     orange
rxvt.termName:        rxvt
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

#7

帖子 eexpress » 2007-08-21 15:57

urxvt在fvwm兼容性并不好。可能非常慢。
● 鸣学
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

#8

帖子 bones7456 » 2007-08-21 16:13

有没有纯文本界面的终端软件推荐下啊~~
关注我的blog: ε==3
skyily
帖子: 29
注册时间: 2007-10-05 1:36
来自: 江西

#9

帖子 skyily » 2007-10-07 3:26

I still don't understand, I am just sorry.
我喜欢,我追求......
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

#10

帖子 fanhe » 2007-10-11 23:18

我怎么觉得gnome-terminal就已经很好用了
lcczx
帖子: 73
注册时间: 2007-10-21 13:38

#11

帖子 lcczx » 2007-10-26 20:20

roylez 写了:图片都在flickr上面,楼上的被和谐了。
才看到LZ是HONG KONG的,大陆还是喜欢和谐,虾米东西都被和谐了,我郁闷死了滴!!!
唉~~这个输入法虾米时候更加好用一点啊??我都快被这个输入法给郁闷死了。。。
头像
shugoal
帖子: 1109
注册时间: 2007-08-20 21:39
来自: 沈阳
联系:

#12

帖子 shugoal » 2007-10-26 23:19

啊 除了RXVT部分 其它的都没看懂 不过如何设置RXVT的透明呢??
失恋的痛苦不在于失恋本身 在于青黄不接!
青黄不接的年代里 我把爱情暂放一边!

★★○●◎◇★☆☆★
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

#13

帖子 roylez » 2007-10-27 8:17

楼上的,urxvt伪透明是这么几行控制的

代码: 全选

URxvt.inheritPixmap:        True
URxvt.tintColor:            grey
URxvt.shading:              50 
真透明自己man urxvt看 alpha channel support 部分吧。
头像
shugoal
帖子: 1109
注册时间: 2007-08-20 21:39
来自: 沈阳
联系:

#14

帖子 shugoal » 2007-10-27 15:35

roylez 写了:楼上的,urxvt伪透明是这么几行控制的

代码: 全选

URxvt.inheritPixmap:        True
URxvt.tintColor:            grey
URxvt.shading:              50 
真透明自己man urxvt看 alpha channel support 部分吧。
用Compiz可以实现真透明的 就是在透明的选项里打一个 unknow 就可以了 不过加上Unknow 用Mplayer放电影时播放窗口默认就透明了 不知道COmpiz是通过什么分辨窗口的!!
失恋的痛苦不在于失恋本身 在于青黄不接!
青黄不接的年代里 我把爱情暂放一边!

★★○●◎◇★☆☆★
gtx
帖子: 172
注册时间: 2005-10-28 17:40

#15

帖子 gtx » 2007-11-07 0:02

我想请教一下楼主,把你的配置写在~/.Xdefaults里,然后再运行
xrdb -load ~/.Xdefaults
时,出现如下错误:
<stdin>:46: warning: Illegal digit in octal number "06989"
URxvt.color6: #06989A
不知道有什么解决的办法吗?
回复