笔记: gvim同时处理中日韩文

一、两项要点

gvim处理多国文字(unicode)有两项要点:一是编码环境:set enc=utf-8;二是正确的字体,比如要正确显示韩文可选择GulimChe、DotumChe字体。
[img:gvim unicode]
上图中9-12行字符未能正常显示(同样的字体,notepad可以正确显示更多)。对应的设定为:
set lm=none
set enc=utf-8
let $LANG='en'
set ambiwidth=double
set guifont=DotumChe:h12:cANSI

二、备注

0.
多数情况下,我用gvim处理中文,因此,默认enc是prc而非utf-8。临时有需要往往改enc,相对不太关注fenc。[参见]

1.测试文本

日语(にほんご、にっぽんご)朝鲜语(조선어)或称韩国语(한국어)
代码 字符标准名称 显示
A 大写拉丁字母"A" A
ß 小写拉丁字母"Sharp S" ß
þ 小写拉丁字母"Thorn" þ
Δ 大写希腊字母"Delta" Δ
Й 大写斯拉夫字母"Short I" Й
ק 希伯来字母"Qof" ק
م 阿拉伯字母 "Meem" م
๗ 泰文数字 7 ๗
ቐ 埃塞俄比亚音节文字"Qha" ቐ
あ 日语平假名 "A" あ
ア 日语片假名 "A" ア
叶 简体汉字 "叶" 叶
葉 正体汉字 "葉" 葉
엽 韩国音节文字 "Yeob" 엽

2.
中文简体Win XP下,不设定encoding时,相当于cp936: simplified Chinese (Windows only),支持别名prc, chinese。也就是说,中文简体Win XP下,不设定enc与
se enc=prc
se enc=cp936
se enc=chinese
是等同的。

3.
此环境下,保存txt相当于notepad.exe的ansi。

4.
enc=prc下,处理unicode字符能力当然比较弱:默认开一个新文件复制韩文过来,它根本不认识;打开一个utf-8编码多语言的文件,也可能转换出错。

5.
所以,处理unicode字符时,一定要(临时)设为enc=utf-8

6.
直接切换到enc=utf-8,GVIM界面会显示乱码,韩文仍无法显示。前者是GVIM调用资源的问题,后者是当前字体不支持韩文(多数中文字体都支持日文)。
这时,虽显示异常,但不影响实际使用。比如,你仍可以复制/粘贴。

7.
如果看起来不舒服,则可以更改显示字体为韩文(代价是中文丑陋)。
se guifont=* 选择 GulimChe或DotumChe,字符集选韩文(不选似乎也可以)。

8.
曾有一段时间,我倾向于选择utf-8,让它成为gvim的enc、文本文件的保存格式、html的编码格式。
但这种“高”标准化对其他程序并不友好。比如:TC中ctrl+q或F3显示txt文件,进行文件内容比较。另外,对中文而言utf-8编码体积是原默认编码的1.5倍,如果是一篇长网页,差异还是难以忽视的。
因此,后来我又改回了ansi/gb-2312,除非遇到问题,才选择utf-8。

9.
对开发者或应用而言,应支持高标准;对用户或数据而言,采用低标准更为有利。此合于老子“知其雄,守其雌”之道。(完)


B1:已有评论30 条

  • 老杨: 2009-02-26 10:32, #8024

    xbeta你好,我想问问在gvim编辑中文的时候,怎么样才能用方向键在段中控制光标?比如我现在光标在本段开头,按“下”的时候光标就跳到这一段的末尾去了,但是我只想下移一行而已。
    简言之,能实现像term中那种操作吗?

    回复

    善用佳软: 2009-02-26 11:20

    技术上gj可以,
    但实际中我还是用鼠标的。

    回复

    老杨: 2009-02-26 21:05

    弱弱的问,gj什么意思

    回复

    善用佳软: 2009-02-27 08:03

    看来你真的是用小键盘的方向键啊。vim用户很少用它们,而是在normal mode下按hjkl代表4个方向移动。这样做的好处是按键更方便,更重要的是60j就成了下移60行(段),就可以用于复杂脚本。这是vim的入门第一课,呵呵。

    希望将来有时间,可以为非专业人士(无编程、无UNIX/Linux/term经验)写一个vim入门系列。

    《普通人的编辑利器——Vim》限于篇幅,很多要点仅是一笔带过,但可以细心阅读的话也能对vim有全面认识。

    回复

    老杨: 2009-02-27 21:05

    因为是笔记本嘛,方向键也不远的
    那到底怎么样能在插入状态下把光标上移一行,不是一段呢?

    回复

    善用佳软: 2009-02-28 07:49

    应该是不能的。
    vim大概认为这种需求是不太合理的。因为行是窗口宽度折出来的概念,很少需要从“A列”B行转到“A列”D行,更可能你的目标是X列Y行。即光标实际的路径需要“斜向”移动,而非“竖直”移动。
    从这种需求来看,Normal模式下的vim提供了非常多样并可灵活组合的移动命令;而在insert模式下我的习惯是用鼠标(实际是ThinkPad的小红帽)。
    当然,vim跳转功能对中文而言不是很好用。

    回复

  • leomonkey: 2009-02-26 13:07, #8026


    另外,被你害的,这些天狠研究你推荐的这些好用的软件呢,呵呵

    回复

  • Ding: 2009-02-26 13:11, #8027

    似乎DotumChe对于部分中文,还是无法很完美的显示。
    比如:中华人民共和国。
    中的“华”和“国”

    回复

    leomonkey: 2009-02-27 09:56

    我试验了,可以正常显示啊。

    回复

  • Strange: 2009-02-26 17:00, #8031

    vim里
    encoding基本上常规配置utf-8
    用fencoding选项来控制输出文件的编码
    [code]
    enc=utf-8
    fenc=cp936
    [/code]

    回复

  • 匆匆过客: 2009-02-26 17:25, #8032

    正在看善用佳软的博客(这次是从头开始),目前在看第32页。问题:怎么有的文章提示已经删除了

    回复

    善用佳软: 2009-02-26 18:47

    ①以前的文章是从sina搬家过来的,格式混乱之处未调整。
    ②某些文章未能搬过来,可去sina阅读。
    ③删除过期或低价值文章,与发表新文章同样重要。

    回复

  • 魔域玩家: 2009-02-27 14:59, #8044

    使用VIM二次。始终还是没能用上。。感觉不太适合我。

    回复

  • danei: 2009-02-27 23:49, #8051

    其实windows/linux平台上unicode编码中 utf16 小尾序兼容性最好
    您老用utf-8在tc中有兼容性问题估计是因为bom没有加上去。反正utf-8有没有bom都很烦的。

    回复

    善用佳软: 2009-02-28 11:05

    没错。有无bomb,各有各烦恼。
    以前没关注过utf16,因为网页都是用utf-8的。

    回复

    danei: 2009-02-28 14:14

    晕,不是炸弹……
    utf-16 le中文的话占地比utf-8小,如果全英文则比utf-8大,总体来说和gb18030差不多;兼容性应该是最好的,而且处理起来最快(因为大部分字编码都是等长的,而且新一点的操作系统是原生支持的)

    回复

  • danei: 2009-02-28 14:20, #8061

    另外,显示的话其实应该是vim对于字体替换支持不好,本来正常的步骤应该是用默认选择的字体显示,碰上显示不出来的再调用默认的“补充”字体,比如选tahoma显示,碰上中文了,应该用宋体来显示,再碰上了cjk ext-b的字,则用simsun ext-b来显示。这些字体链接在注册表里面都有的,就看程序是否选择遵守了。

    回复

  • jude: 2009-02-28 20:13, #8065

    为什么网站总是把我的Opera浏览器识别为手机访问?希望改一下设置。

    回复

    danei: 2009-02-28 23:21

    查看-小屏幕-去掉√,看看行不行
    不是这儿网站的问题,你自己的问题,我也用opera

    回复

    jude: 2009-02-28 23:45

    不是这个问题。清空cookie后再浏览,主页是桌面版,可一点进某一篇文章就是移动版。应该和User Agent有关,我在opera:config中把ISP填上了自己的博客地址,这样UA就是:Opera/9.62 (Windows NT 6.1; U; welcome to http://jude.appspot.com; en) Presto/2.1.1 可我发现朱雀版的ISP中也有内容,是Edition IBIS,浏览善用佳软就不会跳到移动版,我把它改成自己的博客地址后就得到移动版,而即使我把它改成Nokia 6300,却得到的还是桌面版。

    这个博客插件还真有点诡异。

    回复

    danei: 2009-03-01 01:18

    囧,原来是ua……我错了
    那的确有点诡异

  • kraft: 2009-03-04 12:06, #8074

    有没有桌面提醒软件推荐

    回复

  • 善用佳软: 2009-03-13 23:00, #8345

    测试邮件订阅

    回复

  • 善用佳软: 2009-03-13 23:04, #8346

    再测试。

    回复

  • demonye: 2009-06-06 17:45, #9729

    我设成这样是可以的:
    set guifont=新宋体:h12:cGB2312
    但有个问题是,光标移到韩文字符后就变成了框框,Ctrl-L一下后又好了

    回复

  • 田鼠007: 2009-09-08 17:21, #11494
  • superman: 2009-09-19 18:26, #11716

    xbeta你好!有个问题请教下,我初装gVim,准备学习。在360上下了个中文版安装。第一次打开显示的是中文,但第二次打开后就成英文的了,请问怎么让其显示为中文界面?

    回复

    善用佳软: 2009-09-21 11:56

    gvim本来多语言支持很好,哪里来的中文版?
    先完全卸载/删除,再从官方下载试试。

    回复

    superman: 2009-09-21 18:35

    就是工具栏跟菜单栏显示为中文。

    回复

  • [...] 参考:gvim同时处理中日韩文 标签:gvim 杂七杂八 - RSS Feed [...]

我要发表评论

您的留言:
NOTICE: You should type some Chinese word (like “你好”) in your comment to pass the spam-check, thanks for your patience!

 名称/Name (* 必需)
 邮箱/Email (* 必需)
 链接/Link