macOS下vim 中文输入法切换问题和两种解决方案

vim好用是好用,就是跟中文输入法配合的不算太好。有没有什么解决办法呢?我今天就尝试解决一下。

先上效果:

方法一:xkbswitch-macosx安装过程

《解决恼人的 vim 中文输入法切换问题[视频]》https://zhuanlan.zhihu.com/p/49411224
这个教程写的很详细,大家直接看这个就好了。我只是记录一下我的解决过程。
mac 下直接 5 步走

git clone https://github.com/myshov/xkbswitch-macosx
cp xkbswitch-macosx/bin/xkbswitch /usr/local/bin
git clone https://github.com/myshov/libxkbswitch-macosx
cp libxkbswitch-macosx/bin/libxkbswitch.dylib /usr/local/lib/

第5步安装插件,不同的插件管理器大同小异。
install plugin
以 Vundle插件管理器为例

Plugin 'lyokha/vim-xkbswitch'

设置完成后,重启vim 输入:PluginInstall

插件安装完成后,重启 vim。
然后 :EnableXkbSwitch开启自动切换输入法功能。实测可以正常使用。

我的环境如下:

项目
操作系统 macOS Big Sur 11.2
输入法 简体五笔 (系统自带)

体验感受

  • 输入法切换有卡顿
  • 不支持 ctrl -c 切 普通模式的方式
  • 有用,希望能更好用

Esc或者Ctrl - [切换普通模式(正常)

插入模式,按Esc 切换 到普通模式,这里系统输入法自动进入英文模式(有一些延迟,但是影响不大)。在普通模式按i进入插入模式会自动切换到中文输入法。

Ctrl - c切换普通模式(无效)

为什么我知道按ctrl -c 不正常,因为我平时就是按这个快捷键切换普通模式的,难受啊,要我改变切换习惯吗?

jk 替换Esc方案

inoremap jk <esc>

中文输入法本身就无法使用jk切换Esc,所以没有影响。

方法二:ybian/smartim

项目主页:https://github.com/ybian/smartim
安装方法以Vundle为例

加入一行到 ~/.vimrc 文件:

Plugin 'ybian/smartim'

vim中运行 :PluginInstall

SmartIM假定您的默认键盘是美国英语(com.apple.keylayout.US)。如果要更改此设置,请将以下行添加到您的.vimrc:

~/.vimrc 设置默认要切换到的输入法。我的设置如下:

" 设置normal模式切换到的输入法
let g:smartim_default = 'com.apple.keylayout.ABC'

这个输入法名称是如何获取到的?执行 im-select即可得到。

~/.vim/bundle/smartim/plugin/im-select
com.apple.keylayout.ABC

使用体验

  • 安装简单方便,基本 2步就搞定了
  • 仅支持macOS系统
  • 使用效果跟上面的xkbswitch几乎没有区别,支持Esc,Ctrl - [但是不支持Ctrl - c

不支持Ctrl - c的解决办法

我本想为了这个中文输入,改掉我按Ctrl - c 替换Esc的习惯的,后来一想我直接把 Ctrl - c映射成Esc不就搞定了吗?实测还真行。这下就可以接近完美啦!

~/.vimrc 加入以下配置。

" ctrl-c 映射到 esc
inoremap <C-c> <esc>

总结

我个人更喜欢 ybian/smartim,因为安装简单方便,不需要安装其他的库。主要不往系统目录复制东西,感觉更绿色,方便复制到其他电脑上使用。

宏问题

2021年03月15日
如果宏里有插入模式与普通模式之间切换的,会导致宏运行的非常的慢。一个简单的宏没这个插件基本上1秒完成,有这个插件基本就要几十秒。

今天在运行宏的时间遇到问题了,只要在录制的宏中用普通模式和插件模式切换的,在运行宏的时候会发现宏运行的非常慢,很卡。而且还会导致宏运行不起来。这个就很有影响了。

参考文献

《解决恼人的 vim 中文输入法切换问题[视频]》https://zhuanlan.zhihu.com/p/49411224

你可能感兴趣的:(vim,mac,macOS,vim,中文输入)