vimim 如何实现中英文“无缝”混排

154 views
Skip to first unread message

digis...@gmail.com

unread,
Mar 29, 2009, 9:59:57 AM3/29/09
to vimim
首先向vimim的作者表示我十二分的敬意,这个vimim真的使的在vim中输入中文变得非常愉快了。

可是中英文混排目前会在英文和中文之间留有空格,否则无法英文后的中文。

还是有好的混排的方法我尚没有发现。

Sean

unread,
Mar 29, 2009, 7:45:06 PM3/29/09
to vimim
> 可是中英文混排目前会在英文和中文之间留有空格,否则无法英文后的中文。
> 还是有好的混排的方法我尚没有发现。

首先, 让我们分析 requirements:
例如:
1 My girl is very beautiful.
2 我的姑娘是很漂亮。
3 我的 girl 是 very 漂亮。
4 我的girl是very漂亮。

#1 是英文
#2 是中文翻译 (VimIM *dummy translator* 翻译的)
#3 是 VimIM 干的 (VimIM static Chinese Input mode)
#4 是不是你所要的?

其次, 让我们讨论中英文混排:

1. 别的 IME 是如何处理中英文“无缝”混排的?
2. 在 中文输入模式插入英文, IME 八仙过海,各显神通
2.1 IME 好像没有统一方案?
2.2 VimIM 【动态模式】下, * 星号键前缀还可用于快捷英文插入
2.3 VimIM 【静态模式】下, 用表格键上英文
3. 有 VimIM user 建议用回车直接上英文, 但是 <Enter> key is lost
4. 我自以为是, 决定 用空格键上汉字,用表格键上英文。
5. 我认为 “留条缝” 好看点 :))
6. Vim/VimIM 灵活善变, depends on what you want

最后, 让我们研究可行性:

1 VimIM 的 <Tab> mapping 非常简单:
line 845 http://maxiangjiang.googlepages.com/vimim.html
inoremap <silent><Tab> <Esc>a<Space>
所以, 有完善空间。你先拭一拭, 看怎样改合你的口味。
2 Vim 的魔法在中文编辑 [Vim Normal Mode]
例如, 去掉 <Space>
:s/\s//<CR>
:%s/\s//<CR>
3. Vim 没有被 VimIM 和谐! 所有 Vim 的魔法都可以玩。

digis...@gmail.com

unread,
Mar 29, 2009, 9:18:39 PM3/29/09
to vimim
感谢Sean的认真回复。

首先谈一下喜欢VIMIM的原因,再提几点建议。

用其他的中文输入法时,当从插入模式切换到普通模式时,输入法仍然保持中文输入状态,必须关闭输入法或切换至英文状态才能做后续操作,同样的,从普通模
式转入插入模式也要做这样的转换操作,甚是麻烦。而VIMIM的出现,彻底终结了这个输入法转换的梦魇。:))

所以VIMIM的发展要在保持以上区别于其他输入法的大卖点的基础上兼收并蓄。

中英文混排的空格问题,不是一个排版美学的讨论,而是一个需求。而且中文的字词在句中不用空格分隔是中文与西文区别的一个特点。最关键的是其他输入法不
会要求在中英文混排时加入空格分隔。

× 别的IME,比如Google拼音使用Shift键来切换中英文输入状态,我觉得非常顺手,是否可以引入VIMIM。

关于可行性研究之二,并不是一个解决方案,先加空格再替换掉,有点蠢,况且我也不希望替换掉所有的空格。

另外,
1、VIMIM标点符号的输入也不方便,比如句号要用TAB键输入才行。C-a切换不出全角空心句号。
2、我觉得通配符匹配是个鸡肋,一般文字输入时几乎不可能用到。而它的存在,导致在输入中错误的将前面已输入的内容替换了,这样的情况已出现好多次,很
闹心。
3、当前VIMIM在快速开发中,建议同学们安装getscript.vim插件,然后将 2506 1 :AutoInstall:
vimim.vim写入GetLatestVimScripts.dat中,这样就快速获取vimim.vim的更新了。当然也建议VIM以后采用
vimball的格式。

Sean

unread,
Mar 30, 2009, 12:54:37 AM3/30/09
to vimim
> 用其他的中文输入法时,当从插入模式切换到普通模式时,输入法仍然保持中

> 文输入状态,必须关闭输入法或切换至英文状态才能做后续操作,同样的,从
> 普通模式转入插入模式也要做这样的转换操作,甚是麻烦。而VIMIM的出现,
> 彻底终结了这个输入法转换的梦魇。:))

It is great to know that VimIM is useful! :))

I never have a chance to use other IME, because
(1) I hate "hot-key" switch
(2) I don't need to write Chinese for daily work
(3) I want to keep "pure" English environments.

The most thing I use is "VimIM 汉字一键插入", for typing Chinese ad hoc.


> 最关键的是其他输入法不会要求在中英文混排时加入空格分隔。

It is interesting. It does not look good when English and Chinese
getting together without space in between, in my opinion. It might
depend on different font we used though.


> 别的IME,比如Google拼音使用Shift键来切换中英文输入状态

That is not possible, because VimIM depends on Vim.
Please note Vim does not dependent on Operating System! Therefore,
VimIM can work on Linux, Solaris, Mac and Windows.

使用Shift键 only works for Windows, if it can be worked that way.


> VIMIM标点符号的输入也不方便,比如句号要用TAB键输入才行。C-a切换不
> 出全角空心句号。

- 中文标点:
+ `VimIM 中文输入模式`_ 用 **i_CTRL-A** 切换中英文标点
+ 英文句号和星号不变,以支持 `通配符匹配`_
+ 中文句号改用英文反斜杠映射

It is used to default on, but I don't like Chinese punctuation myself.
If it is used by most users, I can add it back as "default ON".
As for 全角空心句号, it is conflicted with 通配符匹配, so I used 英文反斜杠映射

If 通配符匹配 is disabled, 全角空心句号 should be back using
English period. Please confirm.


> 我觉得通配符匹配是个鸡肋,一般文字输入时几乎不可能用到。而它的存在
> ,导致在输入中错误的将前面已输入的内容替换了,这样的情况已出现好多

> 次,很闹心。

It is interesting to find that opinion. Are you talking about
智能模糊匹配 or 通配符匹配? Can you give examples?
Also, why not disable it if you don't like it?

I like 智能模糊匹配 very much, which cannot be found in other IMEs.
It can 能够输入码表里没有,但您心里有的输入码。
It is good for those people like me, whose 拼音 is bad, 又不懂型码


> 当前VIMIM在快速开发中,建议同学们安装getscript.vim插件,然后将2506
> 1 :AutoInstall: vimim.vim写入GetLatestVimScripts.dat中,这样就快速
> 获取vimim.vim的更新了。

VIMIM 的快速开发 depends on feedbacks like users from you. The current
status is what 我的爱好 ... 但是我的爱好不代表 VimIM 玩家的爱好,
因为我没有打中文的经验 :))


> 当然也建议VIM以后采用 vimball的格式。

How to deal with so many sample data files in that case? different
people have different preference.

最后,我习惯用英文盲打。多亏我的 VimIM, 我勉勉强强可以打汉字了,但是
太慢 (拼音不标准, 型码不想学, 小时候偷偷摸摸学过四角号码 :))

用中文商量问题,好辛苦。不好意思用英文 ...

Can you also make correction on the manual:
http://maxiangjiang.googlepages.com/vimim.html
The most important thing is that it can be understood.

Thank you for your continuous feedback and let's work together to
make
VimIM really useful for more Vim fans.


Sean

Sean

unread,
Mar 30, 2009, 2:30:14 PM3/30/09
to vimim
> 中英文混排的空格问题,不是一个排版美学的讨论,而是一个需求。
> 而且中文的字词在句中不用空格分隔是中文与西文区别的一个特点。
> 最关键的是其他输入法不会要求在中英文混排时加入空格分隔。

一个空格,如此重要,吓了我一跳。 :)

我抽空玩了一下 Vim 的魔法 (line 212 to 232) 暂时放在:
http://maxiangjiang.googlepages.com/vimim.vim.html
http://maxiangjiang.googlepages.com/vimim.vim

你试试看,满不满意?

【默认开启】 但我选择关闭
+ 关闭可设::let g:vimim_disable_no_space_english_input=1


附录: 说明书:

VimIM 中文输入模式
------------------

+ 【静态模式】【默认开启】

- 【经典】用空格键上汉字,用表格键上英文。
- 【优点】中文输入和英文输入和谐共处
- 【特点】显示编码,安安静静。
- (可关闭)中英文“无缝”混排

- 中英文“无缝”混排:
+ 在英文和中文之间不留空格
+ 关闭可设::let g:vimim_disable_no_space_english_input=1

digis...@gmail.com

unread,
Apr 2, 2009, 2:31:37 AM4/2/09
to vimim
> 一个空格,如此重要,吓了我一跳。 :)
不好意思让您受惊了。

感谢费时做的修改,解法简单聪明,不过遗憾的是不能工作在动态模式下。而且在已有的英文文档的结尾继续添加汉字也不可以。

匹配的边界判断是否可以有更聪明的做法。

之前提过的"通配符匹配“是鸡肋,建议不要”默认开启“。智能模糊匹配是绝对的好东东。

再次感谢兄弟的发明。

vimim

unread,
Apr 10, 2009, 4:10:30 PM4/10/09
to vimim
>> "通配符匹配“是鸡肋

好像不止一个人有你这个想法。看来是众人皆醒我独醉。 :))

最新版改为【默认关闭】

通配符匹配
----------
+ 【优点】 `万能的通配符 <vimim_wildcard_search.gif>`_
+ 用正则表达式英文星号 ``*`` 匹配零个或以上字符
+ 用正则表达式英文句号 ``.`` 或问号 ``?`` 匹配壹个字符
+ 开启可设: :let g:vimim_enable_wildcard_search=1
+ 【默认关闭】

另外,请提供一些 “VimIM 玩家体验”,最好举多几个详细的例子。
我没有玩过中文输入法,不知道许多“理所当然”的输入法习惯。

我知道一点点拼音,但分不清“能”和“龙”。
小时候偷偷摸摸学过一些四角号码。早已没兴趣学五笔,仓颉等形码。
所以就瞎折腾出一个混码输入法(山寨版),勉勉强强可以打汉字了。见笑。

谢谢!

vimim

unread,
Apr 21, 2009, 2:31:36 PM4/21/09
to vimim

换了个算法,看是不是好一点?

回车键能上英文,然后无缝混排。


On Apr 1, 11:31 pm, "digisat...@gmail.com" <digisat...@gmail.com>
wrote:

digis...@gmail.com

unread,
Apr 21, 2009, 8:34:55 PM4/21/09
to vimim

vimim

unread,
May 3, 2009, 1:54:51 AM5/3/09
to vimim
回车键能上英文,然后无缝混排。彻底弄好了。
与新版 VimIM 中文搜索没有冲突了。


On Apr 21, 5:34 pm, "digisat...@gmail.com" <digisat...@gmail.com>
wrote:

Reply all
Reply to author
Forward
0 new messages