Vim的"w"、"e"等一系列快捷键无法支持中文已经在vim_use和vim_dev中讨论过多次了,但是貌似没有开发者愿意给
Vim写一个关于此问题的补丁。我前一段时间研究了一下,发现让Vim在这方面支持中文确实是不现实的。在这里写一下原因,如果有人想继续研究这个问
题,至少可以参考一下。
解决这个问题最直观的想法就是让Vim调用外部的中文分词库分词,然后把光标移动到正确的地方。相应的困难有两点:Vim不愿意和外部进
程通信;Vim集成中文分词器很困难。
Vim的众多开发原则中,有一点是非常重要的,那就是可移植性。Vim运行在很多平台上,不止是*nix、Mac和Windows,还有
VMS甚至 QNX。任何一个Vim的特性补丁能否被检入,不止取决与这个特性的紧急程度,还在很大程度上取决与这个特性的可移植性。Vim不愿和外部
进程通信也正是基于这个考虑,因为不同操作系统的通信机制千奇百怪,要设计和维持一套统一的协议是很困难的。没有和外部进程通信的渠道,让Vim调用外
部分词库也就无从谈起了。
使Vim用外部的分词器是最好的解决方案,因为在统一接口的条件下,这样可以保持很高的灵活性,在多个分词器之间切换。既然这样不行,那
分词器可以集成进 Vim么?可惜,答案是很困难(不是不可能)。Vim关心的另一个非常重要的原则就是性能。Vim运行的环境可以是有图形界面的,也
可以命令行。特别是在命令行下,延迟是不可忍受的。幸运的是现在的中文分词库的性能都还不错,一般都有上百kb/s的处理速度,每秒都在十万字以上。另
外,既然是集成进 Vim,那在众多中文分词库中应该选用哪一个呢?还有一个不利的因素就是现在中文分词都都需要词库,而这个词库是很大的。这么大的一
个词库如果集成进 Vim,那下载起来会很困难。再者词库是需要更新的(程序会自己学习新词么?嗯,也许会吧,十年之后……),这就是大麻烦了,还要和
网络通信,大大的不行。
即便有个牛人把上面的麻烦都解决了,写出来了一个可用的补丁,和Bram他们讨论的差不多了,那也需要在一个branch中测试个一年半
载来尽可能的找出所有bug(可以参见vim_dev的patches页面)。那时候,任何一个开发者应该都已经被磨的没脾气了。
看起来万事俱备,实际上满是窟窿 T-T
这个问题最好的参考,也是前车之鉴,就是Vim的拼写检查部分。在Vim中输入:h develop-spell可以查看帮助文件中关于
拼写检查当年的讨论结果。最终拼写检查没有使用现成的Aspell,而是Vim自己实现了一份。Vim和Emacs的不同之处很明显,这是Vim的特
色,但是在这种情况下这种自给自足的小农思想也成了Vim的一圈桎梏吧。
唉,还是算了吧
On May 10, 2:31 pm, 小谢 <mft...@gmail.com> wrote:
> 转一篇我的blog中的文章吧,仅供参考。
> ------------------------------
>
> Vim的"w"、"e"等一系列快捷键无法支持中文已经在vim_use和vim_dev中讨论过多次了,但是貌似没有开发者愿意给
> Vim写一个关于此问题的补丁。我前一段时间研究了一下,发现让Vim在这方面支持中文确实是不现实的。在这里写一下原因,如果有人想继续研究这个问
> 题,至少可以参考一下。
>
> 解决这个问题最直观的想法就是让Vim调用外部的中文分词库分词,然后把光标移动到正确的地方。相应的困难有两点:Vim不愿意和外部进
> 程通信;Vim集成中文分词器很困难。
>
> Vim的众多开发原则中,有一点是非常重要的,那就是可移植性。Vim运行在很多平台上,不止是*nix、Mac和Windows,还有
> VMS甚至 QNX。任何一个Vim的特性补丁能否被检入,不止取决与这个特性的紧急程度,还在很大程度上取决与这个特性的可移植性。Vim不愿和外部
> 进程通信也正是基于这个考虑,因为不同操作系统的通信机制千奇百怪,要设计和维持一套统一的协议是很困难的。没有和外部进程通信的渠道,让Vim调用外
> 部分词库也就无从谈起了。
>
> 使Vim用外部的分词器是最好的解决方案,因为在统一接口的条件下,这样可以保持很高的灵活性,在多个分词器之间切换。既然这样不行,那
> 分词器可以集成进 Vim么?可惜,答案是很困难(不是不可能)。Vim关心的另一个非常重要的原则就是性能。Vim运行的环境可以是有图形界面的,也
> 可以命令行。特别是在命令行下,延迟是不可忍受的。幸运的是现在的中文分词库的性能都还不错,一般都有上百kb/s的处理速度,每秒都在十万字以上。另
> 外,既然是集成进 Vim,那在众多中文分词库中应该选用哪一个呢?还有一个不利的因素就是现在中文分词都都需要词库,而这个词库是很大的。这么大的一
> 个词库如果集成进 Vim,那下载起来会很困难。再者词库是需要更新的(程序会自己学习新词么?嗯,也许会吧,十年之后......),这就是大麻烦了,还要和
转一篇我的blog中的文章吧,仅供参考。
------------------------------
Vim的"w"、"e"等一系列快捷键无法支持中文已经在vim_use和vim_dev中讨论过多次了,但是貌似没有开发者愿意给
Vim写一个关于此问题的补丁。我前一段时间研究了一下,发现让Vim在这方面支持中文确实是不现实的。在这里写一下原因,如果有人想继续研究这个问
题,至少可以参考一下。
解决这个问题最直观的想法就是让Vim调用外部的中文分词库分词,然后把光标移动到正确的地方。相应的困难有两点:Vim不愿意和外部进
程通信;Vim集成中文分词器很困难。
Vim的众多开发原则中,有一点是非常重要的,那就是可移植性。Vim运行在很多平台上,不止是*nix、Mac和Windows,还有
VMS甚至 QNX。任何一个Vim的特性补丁能否被检入,不止取决与这个特性的紧急程度,还在很大程度上取决与这个特性的可移植性。Vim不愿和外部
进程通信也正是基于这个考虑,因为不同操作系统的通信机制千奇百怪,要设计和维持一套统一的协议是很困难的。没有和外部进程通信的渠道,让Vim调用外
部分词库也就无从谈起了。
使Vim用外部的分词器是最好的解决方案,因为在统一接口的条件下,这样可以保持很高的灵活性,在多个分词器之间切换。既然这样不行,那
分词器可以集成进 Vim么?可惜,答案是很困难(不是不可能)。Vim关心的另一个非常重要的原则就是性能。Vim运行的环境可以是有图形界面的,也
可以命令行。特别是在命令行下,延迟是不可忍受的。幸运的是现在的中文分词库的性能都还不错,一般都有上百kb/s的处理速度,每秒都在十万字以上。另
外,既然是集成进 Vim,那在众多中文分词库中应该选用哪一个呢?还有一个不利的因素就是现在中文分词都都需要词库,而这个词库是很大的。这么大的一
个词库如果集成进 Vim,那下载起来会很困难。再者词库是需要更新的(程序会自己学习新词么?嗯,也许会吧,十年之后……),这就是大麻烦了,还要和
网络通信,大大的不行。
即便有个牛人把上面的麻烦都解决了,写出来了一个可用的补丁,和Bram他们讨论的差不多了,那也需要在一个branch中测试个一年半
载来尽可能的找出所有bug(可以参见vim_dev的patches页面)。那时候,任何一个开发者应该都已经被磨的没脾气了。
看起来万事俱备,实际上满是窟窿 T-T
这个问题最好的参考,也是前车之鉴,就是Vim的拼写检查部分。在Vim中输入:h develop-spell可以查看帮助文件中关于
拼写检查当年的讨论结果。最终拼写检查没有使用现成的Aspell,而是Vim自己实现了一份。Vim和Emacs的不同之处很明显,这是Vim的特
色,但是在这种情况下这种自给自足的小农思想也成了Vim的一圈桎梏吧。
我觉得吧, 让 vim 认为像"的", "是",还有中文标点之类的字和字符为空格, 以之为词
和词的分界也可以呀, 或者把它们从 iskeywd 里拿出(目前还不支持 asicii 外的字).
虽然可能太简陋了点, 但至少比现在一整句的跳过好多了. 词库是最不现实和靠谱的, 体
积太大,
--
Hi,
Wu, Yue
另外, 中文分词一直没解决, 的确根vim用户群的特点有关系. 我曾问过我老板,
为什么在年轻的时候要从vim转向了emacs, 他说vim更适合programming,
他只需要能排TeX的编辑器. 当然万能的emacs不止能排TeX,
不过vim的文化的确更偏向于programming.
我想在vim的用户中, 用她来写代码, 写脚本的占绝大多数(我周围是这样),
排TeX其实也是在写代码, 尤其是写cls/sty/clo这些宏包的时候.
而代码中英文是绝对的主导. 即使TeX用户, 更多的也来自于学术圈,
这类用户写英文的机会远远多于中文.
所以这种比较"小众"的特性发展肯定很缓慢的, 如果vim象word一样满世界都在用,
甚至中央机关的公告都是用vim排TeX生成的, 那分词应该早就出来了.
但是我依然非常期待这个特性. 如果词库的大小和拼写检查的在同一个量级,
并且规则简单, 对于现代中文有80%以上的正确率应该是有希望成为正式的功能.
再说下我自己的感受, 虽然每天都在用vim写代码排文章, 使用的特性都是最常用的,
所以需要中文分词的机会还真不多.
我曾排过一个2k多页的网络小说给自己和朋友看, 用的最多的是正则表达式和脚本,
这都是vim的强项. 拷贝中文单词基本就是y2l, y3l之类的,
这时候我才会希望有中文分词就更好了, 但是没有也无妨.
lz在这个问题上研究了很长时间, 能不能列举一下中文分词再哪些场合是必须的,
或者能大大提高效率.
2009/5/12 居振梁 <juzhe...@gmail.com>:
> 2009/5/12 Zhang Jiawei <gho...@gmail.com>
>>
>> 国内vim的用户估计在vim里使用中文的可能性很小。
>
> 为什么这么说啊,考虑一下在vim里写tex的用户。
--
Wenbo YANG
The State Key Laboratory Of Information Security
Graduate University of Chinese Academy of Sciences
19A Yuquan Road, Beijing, China --- Homepage: http://solrex.cn
用 Vim 编辑任何中文文档都是很痛苦的事情,别的且不说,为了切换不同的编辑模式就要不停地切换输入法,这个就让人很头痛了。万一输入法没有切换成功就执行了一些命令,还会导致一些错误错误编辑,今天就不小心切换到中文输入法下胡乱执行了几下
用 Vim 编辑任何中文文档都是很痛苦的事情,别的且不说,为了切换不同的编辑模式就要不停地切换输入法,这个就让人很头痛了。万一输入法没有切换成功就执行了一些命令,还会导致一些错误错误编辑,今天就不小心切换到中文输入法下胡乱执行了几下
u Ctrl+r,丢失了一段 。所以编辑中文 tex 的话,还是用 kile 等专门的编辑器吧,中文文档也是 kate
之类的通用编辑器比较舒服。
On 5月12日, 上午11时22分, "James Z.M. GAO" <gaoz...@gmail.com> wrote:
> 恩, 排中文时候会有一些影响, 如果有好的中文分词, 那中文的折行,
> 段落重排(gqap), 都能有更好的效果. 不过影响也不是特别大,
> 两个标点之间的字一般都不会超过五十个字的.
>
> 另外, 中文分词一直没解决, 的确根vim用户群的特点有关系. 我曾问过我老板,
> 为什么在年轻的时候要从vim转向了emacs, 他说vim更适合programming,
> 他只需要能排TeX的编辑器. 当然万能的emacs不止能排TeX,
> 不过vim的文化的确更偏向于programming.
>
> 我想在vim的用户中, 用她来写代码, 写脚本的占绝大多数(我周围是这样),
> 排TeX其实也是在写代码, 尤其是写cls/sty/clo这些宏包的时候.
> 而代码中英文是绝对的主导. 即使TeX用户, 更多的也来自于学术圈,
> 这类用户写英文的机会远远多于中文.
>
> 所以这种比较"小众"的特性发展肯定很缓慢的, 如果vim象word一样满世界都在用,
> 甚至中央机关的公告都是用vim排TeX生成的, 那分词应该早就出来了.
> 但是我依然非常期待这个特性. 如果词库的大小和拼写检查的在同一个量级,
> 并且规则简单, 对于现代中文有80%以上的正确率应该是有希望成为正式的功能.
>
> 再说下我自己的感受, 虽然每天都在用vim写代码排文章, 使用的特性都是最常用的,
> 所以需要中文分词的机会还真不多.
> 我曾排过一个2k多页的网络小说给自己和朋友看, 用的最多的是正则表达式和脚本,
> 这都是vim的强项. 拷贝中文单词基本就是y2l, y3l之类的,
> 这时候我才会希望有中文分词就更好了, 但是没有也无妨.
>
> lz在这个问题上研究了很长时间, 能不能列举一下中文分词再哪些场合是必须的,
> 或者能大大提高效率.
楼上说的Tex就是一个情况,其实写程序也不是用不到,比如为了省去回头写文档的痛苦而写很多很完善的注释的时候。
>
> On Tue, 12 May 2009, 居振梁 wrote:
> > 2009/5/12 Zhang Jiawei <ghos...@gmail.com>
楼上说的Tex就是一个情况,其实写程序也不是用不到,比如为了省去回头写文档的痛苦而写很多很完善的注释的时候。
On 5月12日, 下午10时53分, Wenbo Yang <sol...@gmail.com> wrote:
> 用 Vim 编辑任何中文文档都是很痛苦的事情,别的且不说,为了切换不同的编辑模式就要不停地切换输入法,这个就让人很头痛了。万一输入法没有切换成功就执行了一些命令,还会导致一些错误错误编辑,今天就不小心切换到中文输入法下胡乱执行了几下
> u Ctrl+r,丢失了一段 。所以编辑中文 tex 的话,还是用 kile 等专门的编辑器吧,中文文档也是 kate
> 之类的通用编辑器比较舒服。
>
> 2009/5/12 居振梁 <juzhenli...@gmail.com>:
>
> > 2009/5/12 Zhang Jiawei <ghos...@gmail.com>
>
> >> 国内vim的用户估计在vim里使用中文的可能性很小。
>
> > 为什么这么说啊,考虑一下在vim里写tex的用户。
>
> --
> Wenbo YANG
>
> The State Key Laboratory Of Information Security
> Graduate University of Chinese Academy of Sciences
> 19A Yuquan Road, Beijing, China --- Homepage:http://solrex.cn
如果说没有什么人在Vim中编辑中文而放弃为Vim添加中文分词,那对于字处理软件(Word、WPS、gedit、UltraEdit、
kate……)可以添加类似的中文分词功能么?好像也不现实,因为它们的使用操作方式不适合。
这已经覆盖了绝大多数中文编辑的领域了,而我们的结论竟然是这么方便实用的中文分词功能无法添加到任何一个中文编辑工具上!太荒唐了!
我没有用过Emacs,但是看起来这是唯一的希望了……
On 5月13日, 上午9时44分, 居振梁 <juzhenli...@gmail.com> wrote:
> > 楼上说的Tex就是一个情况,其实写程序也不是用不到,比如为了省去回头写文档的痛苦而写很多很完善的注释的时候。
>
> 大概理由也差不多了,这类愿意自己写完善注释的程序员,估计更习惯写英文注释了。
只要是发布在中文社区的程序,我都尽量写中文注释。也许有人觉得英文注释更加“专业”,但是为读者想想,谁不愿意看到中文呢?
>
> --
> 自学走了不少弯路,更浪费了太多的时间,寻找良师益友。
> 追求黑客精神和清心寡欲的心态。http://wargrey.yo2.cnhttp://wargrey.blogspot.com
2009/5/13 小谢 <mft...@gmail.com>:
On 5月13日, 上午9时54分, Zhang Jiawei <ghos...@gmail.com> wrote:
> 为读者想想,为自己想想,还是不写中文好,你的读者是老外咋办?
大哥
1、我一度怀疑你看不懂中文,但后来我觉得可能只是假洋鬼子吧。看到“只要是发布在中文社区的程序”了么?
2、你的回帖让我想起“开会的时候只要有一个老外在场所有中国人都说英文”的可笑而可悲的现实,看来还有不少人希望这种现实继续下去
大哥
1、我一度怀疑你看不懂中文,但后来我觉得可能只是假洋鬼子吧。看到“只要是发布在中文社区的程序”了么?
2、你的回帖让我想起“开会的时候只要有一个老外在场所有中国人都说英文”的可笑而可悲的现实,看来还有不少人希望这种现实继续下去
为读者想想,为自己想想,还是不写中文好,你的读者是老外咋办?
有老外在场就说英文是基本的人道关怀,你到了老外那里,我假设你不懂英语,他们懂中文,但直接用一种可以让你懂,却故意不让你懂的无视策略,你在那里会如坐针毡嘛?要学会尊重别人,读读李笑来的这篇博客。
你继续喷,我不回贴了。
On 5月13日, 上午11时11分, Zhang Jiawei <ghos...@gmail.com> wrote:
> "只是要发布在中文社区的程序", 我假设你手里拿的人民币最后不会流通到老外手里?你要有自信人民币够坚挺,你的软件够伟大,那就不会有这种狭隘论断。
>
> 有老外在场就说英文是基本的人道关怀,你到了老外那里,我假设你不懂英语,他们懂中文,但直接用一种可以让你懂,却故意不让你懂的无视策略,你在那里会如坐针毡嘛?要学会尊重别人,读读李笑来的这篇博客。
>
> 你继续喷,我不回贴了。
我也不止一次收到过老外的中文邮件了,如果自己都对中文没有爱,下辈子还是投胎到别处去吧
如果你用过vimim(http://maxiangjiang.googlepages.com/vimim.html)的话,大 概不会对vim编辑中文文档感到痛苦了;
我甚至不需要进入X就可以用它来编辑文档了,相当好用,赶快去试试吧:)
如果你用过vimim(http://maxiangjiang.googlepages.com/vimim.html)的话,大 概不会对vim编辑中文文档感到痛苦了;
我甚至不需要进入X就可以用它来编辑文档了,相当好用,赶快去试试吧:)
文博
2009/5/13 wang feng <wanng...@gmail.com>:
> 如果你用过vimim(http://maxiangjiang.googlepages.com/vimim.html)的话,大
> 概不会对vim编辑中文文档感到痛苦了;
> 我甚至不需要进入X就可以用它来编辑文档了,相当好用,赶快去试试吧:)
--
Thanks for details, but I could not reproduce.
Following what you did, I got:
http://maxiangjiang.googlepages.com/tmp_vimim_zh.gif
One thing you can help is to paste these lines to your data file:
zha 炸 眨 轧 闸 楂 榨 渣 吒 咋 溠 猹 痄 砟
zha 乍 咤 喳 怍 扎 拃 揸 札 柞 蚱 诈 蹅 鲊
zha1 吒 哳 喳 扎 揸 查 楂 渣 齄
zha2 喋 札 轧 铡 闸
zha3 眨 砟
zha4 炸 乍 吒 咤 柞 榨 痄 蚱 诈
Don't forget to :sort before you save.
------------------------------------------
你试试看成不?
如果不行告诉我一声,或者自己过去跟他说说吧,地址在这里:http://groups.google.com/group/vimim/t/b2a322a1a9044420
你试试看成不?
如果不行告诉我一声,或者自己过去跟他说说吧,地址在这里:http://groups.google.com/group/vimim/t/b2a322a1a9044420