大家vim编辑中文文档的时候是怎么弄的?我这效率比gedit低不少阿,怎么改进?

93 views
Skip to first unread message

Kent

unread,
Sep 14, 2010, 9:42:44 AM9/14/10
to Vim...@googlegroups.com
vim用了挺久了,英文和程序代码就不说了。还真没正式编辑过大段的中文文档。 以往最多是FIREFOX it's all text里,写个EMAIL,发个帖子什么的,其实用不到什么编辑,就i/a一下,写完了:wq就完事了。直到昨天。。。。噩梦来了。

我要用中文写一篇文档,有10来页,带有排版的,最后是要pdf。 第一次有这种需求,自然想到就用latex了。也当然用一直和latex配合很默契的VIM。输入法是用的拼音,标点当然得用中文的标点。结果很是恼火,Insert mode还好,剩下的modes里,整个乱套了,按键后根本不是自己想要的,连个最简单的hjkl都费劲。每次都要关闭输入法,再开启,再关闭,适应了好一阵子,还是不行。最后干脆gedit了。

虽然编辑中文文档机会不多,但既然开了这个头了,后面肯定还有类似的,所以想来取经,大家都是怎么处理这个输入法的问题的?还是就得每次切换输入法,或者按SHIFT暂时切换,然后到INSERT MODE里再改回来?


 
Best regards,
 
Kent
 

闲耘(tm)

unread,
Sep 14, 2010, 9:53:13 AM9/14/10
to vim...@googlegroups.com
Windows gVim 是会在切换到 normal 模式时自动关闭输入法的,其他系统未知。




2010/9/14 Kent <kent...@gmail.com>
 

--
要退订此论坛,请发邮件至 Vim-cn-un...@googlegroups.com
更多选项,请通过 http://groups.google.com/group/Vim-cn 访问该论坛

Auston Jary

unread,
Sep 14, 2010, 10:10:59 AM9/14/10
to vim...@googlegroups.com
输入法用的Fcitx 一直都是 按Ctrl切换的...暂时还没需求

貌似有个什么VimIM

ps: 
  :wq可以直接:x   
330.gif

談学鋒

unread,
Sep 14, 2010, 10:13:07 AM9/14/10
to vim...@googlegroups.com
可以试一下以下几个Option

imcmdline
imdisable
iminsert
imsearch

2010/9/14 Kent <kent...@gmail.com>:

Kent

unread,
Sep 14, 2010, 10:19:06 AM9/14/10
to vim...@googlegroups.com
我的输入法是 ibus-sunpinyin 其实scim也试了,一样。我觉得和输入法关系不大。

vimIM 觉得还是不如外面的输入法用着顺手。

談学鋒

这几个options待会我去试试,以前没见过。 先谢谢一下。

 
Best regards,
 
Kent
 



2010/9/14 談学鋒 <cityhu...@gmail.com>

談学鋒

unread,
Sep 14, 2010, 10:30:18 AM9/14/10
to vim...@googlegroups.com
下面是VIM的iminsert帮助文档的一段话,看看是不是可以解决你的问题。呵呵
 
To always reset the option to zero when leaving Insert mode with <Esc>
this can be used: >
:inoremap <ESC> <ESC>:set iminsert=0<CR>
This makes :lmap and IM turn off automatically when leaving Insert
mode.
 
2010/9/14 Kent <kent...@gmail.com>:

Kent

unread,
Sep 14, 2010, 11:00:55 AM9/14/10
to vim...@googlegroups.com
刚才实验了一下。不知道是我没设置对还是什么,不太好用。

我看了帮助
'imcmdline' 'imc'    boolean (default off)
'imdisable' 'imd'    boolean (default off, on for some systems (SGI))

imsearch在这没什么关系。

然后我在.vimrc里加 了

:inoremap <ESC> <ESC>:set iminsert=0<CR>

然后当我开启着输入法(scim ),按ESC从insert mode里退出来的时候,的确执行了:set iminsert=0。 可当我按jklm,输入法的提示汉字窗口还是出来了,但是光标不动。:(

談学鋒

unread,
Sep 14, 2010, 11:14:18 AM9/14/10
to vim...@googlegroups.com
试试在SCIM的设置中,把ESC作为退出输入法的快捷键。

2010/9/15 Kent <kent...@gmail.com>

Kent

unread,
Sep 14, 2010, 11:21:41 AM9/14/10
to vim...@googlegroups.com
在scim-setup里turn-off设置成了 Escape

这次用gvim测试,到INSERT mode以后,输入几个字,按ESC,输入法是关了,可还是insert mode....

談学鋒

unread,
Sep 14, 2010, 11:52:35 AM9/14/10
to vim...@googlegroups.com
把SCIM的设定改回去,再试试下面这个看行不行,如果还不行,真的没招了。我用Window的Gvim,直接就自动切换输入法了,没有发现这个问题。
(前提是你的输入法ON/OFF的快捷键是Ctrl+Space,如果不是,请修改下面第一行)
set imactivatekey=C-space

inoremap <ESC> <ESC>:set iminsert=0<CR>


2010/9/15 Kent <kent...@gmail.com>

Kent

unread,
Sep 14, 2010, 11:59:57 AM9/14/10
to vim...@googlegroups.com

我上面的信没贴imactivatekey这行。其实已经设置了。不管用

我搜索了一下好像得修改scim的配置,不能用scim,得用xim。这个还没试。

家里是ibus的sunpinyin。网上有人说ibus和vim本来就相处挺好,我这好像不是那么回事。待会下班回家了再看看。有成果了再来汇报。

谢谢談学鋒

Kent

unread,
Sep 14, 2010, 4:46:46 PM9/14/10
to vim...@googlegroups.com
汇报一下

家里的ibus输入法的确不用设置就可以和gvim顺利配合。但只是Gvim. 我昨天一直是在urxvt里弄的,所以不行。目前好像还没有什么太好用的法子,除了vimim.  下次就用gvim得了。
 
Best regards,
 
Kent
 



2010/9/14 Kent <kent...@gmail.com>

闲耘(tm)

unread,
Sep 14, 2010, 7:27:02 PM9/14/10
to vim...@googlegroups.com
你的是什么系统啊,我看文档上 :h IME 说 仅对 Windows GUI 有效的。
2010/9/15 Kent <kent...@gmail.com>

Jacky Liu

unread,
Sep 14, 2010, 8:37:47 PM9/14/10
to vim...@googlegroups.com


2010/9/14 Kent <kent...@gmail.com>

我的输入法是 ibus-sunpinyin 其实scim也试了,一样。我觉得和输入法关系不大。

vimIM 觉得还是不如外面的输入法用着顺手。
在 Linux 下我先用的 scim 后用的 fcitx。后一个比较好。用 scim 必须先切换输入法再离开 Insert 模式,否则按键会经过 scim 的解释再传递给 Vim,结果就乱套了。即使切换回英文,未输入的键还是会保留在 scim 的 buffer 里,下次进入 Insert 模式后再传递给 Vim,非常烦人。fcitx 没有这问题,切换到英文以后未输入的键会丢弃。最舒服的还是 Windows 下面,就像 闲耘 说的那样,离开 Insert 模式后输入法自动关闭。

Yongwei Wu

unread,
Sep 14, 2010, 10:00:40 PM9/14/10
to vim...@googlegroups.com
2010/9/15 Jacky Liu <bluege...@gmail.com>:

关键是iminsert选项是否可设成2。Windows和Mac下的图形界面Vim支持。

--
Wu Yongwei
URL: http://wyw.dcweb.cn/

依云

unread,
Sep 15, 2010, 1:06:57 AM9/15/10
to vim...@googlegroups.com
fcitx 和 GVim 的那些选项不兼容,所以 fcitx 后来弄了个 fcitx-remote 程
序来开关输入法,效果不错,但目前还有些问题。不过好处就是,终端下也有效

> --
> 要退订此论坛,请发邮件至 Vim-cn-un...@googlegroups.com
> 更多选项,请通过 http://groups.google.com/group/Vim-cn 访问该论坛

--
技术予人以方便,而不管那人的意图。
_
/o\ 纯文本永远更安全
// \\ 并更易处理。
\\ //
\V/ doc和ppt各版本互不兼容,
/A\ 因此我看到的
// \\ 可能不是您想表达的。
-------
每个在Linux下上QQ的同学,上辈子都是折翼的天使。

Kent

unread,
Sep 15, 2010, 4:37:00 AM9/15/10
to vim...@googlegroups.com
iminsert 0,2都测试了,都没用。如果是 scim,得改scim的配置,
GTK_IM_MODULE =xim  才行
不能用“scim”。

我上面写了,如果用ibus,和gvim,基本上不用怎么设置,可以自如切换。至少我用sunpinyin昨天测试了一下,没问题。如果vim在终端里,目前好像除了VimIM plugin外,没招儿~

@闲耘

我家的笔记本是archlinux,装的ibus-sunpinyin
公司的笔记本是ubuntu 904,装的scim




Best regards,
 
Kent
 



2010/9/15 依云 <lily...@gmail.com>

依云

unread,
Sep 15, 2010, 4:55:42 AM9/15/10
to vim...@googlegroups.com
On Wed, Sep 15, 2010 at 10:37:00AM +0200, Kent wrote:
> iminsert 0,2都测试了,都没用。如果是 scim,得改scim的配置,
> GTK_IM_MODULE =xim 才行
> 不能用“scim”。
>
> 我上面写了,如果用ibus,和gvim,基本上不用怎么设置,可以自如切换。至少我用sunpinyin昨天测试了一下,没问题。如果vim在终端里,目前好像除了VimIM
> plugin外,没招儿~
>
>
有一招就是换用 fcitx 输入法 :-P

不过换输入法的代价都比较大。你可以尝试模拟 fcitx 的方式,在离开插入模
式时利用 xmacro (或者自己用 Xtest 写个程序;xmacro 可能时间上无法精确
控制)发送关闭输入法的键序列(如果之前是开着的话)。
>
> Best regards,
>
> Kent
>
>

Yongwei Wu

unread,
Sep 15, 2010, 8:15:37 AM9/15/10
to vim...@googlegroups.com
终端Vim不会编译进合适的特性。iminsert=2要求下面三者之一:

xim
multi_byte_ime
global-ime

2010/9/15 Kent <kent...@gmail.com>:

--

Cyril.Liu

unread,
Sep 16, 2010, 11:01:59 PM9/16/10
to vim...@googlegroups.com
关于拼音得问题确实是什悲剧的... 我在MacVim 下也发现切换normal 模式输入法是不会自动切换的.  这是非常讨厌的事情

2010/9/15 Yongwei Wu <wuyo...@gmail.com>

Yongwei Wu

unread,
Sep 18, 2010, 9:16:45 AM9/18/10
to vim...@googlegroups.com
装MacVim。:-)

2010/9/17 Cyril.Liu <terr...@gmail.com>:


> 关于拼音得问题确实是什悲剧的... 我在MacVim 下也发现切换normal 模式输入法是不会自动切换的. 这是非常讨厌的事情
>
> 2010/9/15 Yongwei Wu <wuyo...@gmail.com>
>>
>> 终端Vim不会编译进合适的特性。iminsert=2要求下面三者之一:
>>
>> xim
>> multi_byte_ime
>> global-ime

--

Yongwei Wu

unread,
Sep 18, 2010, 9:19:21 AM9/18/10
to vim...@googlegroups.com
啊,你用的已经是MacVim?在.vimrc中加进类似下面的代码了吗?

if has("gui_running")
set iminsert=2
endif

2010/9/18 Yongwei Wu <wuyo...@gmail.com>:

Reply all
Reply to author
Forward
0 new messages