发现fcitx也很不错嘛

scim使用了很长时间了,虽然其中有时候有些麻烦,总体来说也是不错的。不过我只用自然码风格的双拼,scim那丰富的输入法类型对我来说没用,今天心血来潮换fcitx用用,发现居然也是很不错的,比我刚开始在ubuntu 5.10下使用的感觉好多了。

我是直接安装源中的版本,apt安装即可,版本是1:3.4.3-1,输入法选字条上显示的版本是“GirlDog 3.4.3(新年版)”,更换输入法的时候,除了使用im-switch -s fcitx之外,还把/etc/X11/Xsession.d/95input的内容改成了下面这样:

export LC_CTYPE=zh_CN.UTF-8
export XMODIFIERS=@im=fcitx
export XIM=fcitx
export XIM_PROGRAM=fcitx
fcitx

然后重启X就能正常启动fcitx了。

fcitx的主要配置文件是$HOME/.fcitx/config,不过这个文件的编码是gb2312的,所以编辑之前要先更改一下shell环境的字符集(注意文件编码不能改,不然设置无效):

export LANG=zh_CN.utf-8
gedit config

更改设置之后,想立即生效就kill掉fcitx再重启(或者按Ctrl_5也行):

pkill -9 fcitx;fcitx

在我的安装中,或许是ubuntu改装的原因,反查拼音、删除拼音用户词组等快捷键好像无法使用,不过还好,自造词挺省事,直接编辑QuickPhrase.mb就可以了,不过这个文件也必须是gb2312编码才行。

总体fcitx给我的感觉是小巧、快速、够用,不过配置略微麻烦了一点点,需要修改配置文件,而不是像scim那样有图形界面的配置功能;另外就是很多地方,比如配置文件,使用gb2312内码,对于现在大多数utf8编码的linux来说,略微麻烦了一点点。

推荐大家看看fcitx官方网站上的中文PDF文档,挺不错的。

另外还有一个我不知道的问题,比如输入ubuntu,没按回车出英文,而是按空格出了个“手刹虐杀”的中文,以后就记住了,像这种“自造词”如何删除?Ctrl+Del不起作用呀。

Update @ 2007-07-11

刚换过来没几天,作者就由于别人的打击要放弃这个项目,真让人郁闷,Yuking一定要顶住恶势力的攻击啊~~

subversion也需要设置“set LANG=en_US”

在服务器上下载了一个svn(zip格式,解压就可以的),原本是想利用svn作为中转/记录,实现网站远程上传和更新,但是解压之后,运行命令行命令svn.exe,却遇到了像下面这样的乱码:

D:\server\svn\bin>svn ?\232?\175?\183?\228?\189?\191?\231?\148?\168?\226?\128?\156svn help?\226?\128?\ 157?\228?\187?\165?\229?\190?\151?\229?\136?\176?\231?\148?\168?\230?\179?\149?\ 229?\146?\140?\229?\184?\174?\229?\138?\169?\227?\128?\130

这实在是让我纳闷了半天,按理说svn解压缩就行,连install脚本、程序都没有,怎么一运行就乱码呢?并且敲几个其他的svn命令观察,发现乱码还不一样,应该是svn正常的执行了,而输出内容不正常而已。

同样也是偶然的,发现了解决方法。记得在Sybase Open Client 和 GTK+有点小冲突,当时问题出在了环境变量LANG上,这个svn原来也使用了这个环境变量,当环境变量LANG设置为en_US以后,svn的输出信息就正常了。

C:\>set lang=en_us C:\>svn Type ‘svn help’ for usage.

现在把这个LANG设置到windows系统变量中,问题就解决了。

Update @ 2008-04-16

近日在用php实现svn的hooks脚本时发现,虽然使用的系统ubuntu的语言是en_US.UTF-8,但在php中仍然要将LANG设置为en_US才行(LANG设置为en_US.UTF-8就画蛇添足了),不过直接在php中更改环境变量是不行的:

putenv('LANG="en_US"'); 

这样只会影响php的环境,而php调用shell_exec()的时候,传递给命令的还是sh的默认环境,所以要在每次调用的时候强制指定环境变量。除了LANG以外,还要将LC_ALL赋值为en_US.UTF-8,这样才完全没有乱码,完整的结果如下:

$svn_log = shell_exec("env LANG=en_US LC_ALL=en_US.UTF-8 svnlook log $repos -r $rev");

参考:subversion的svn命令行显示乱码的解决