您当前的位置: 首页 >  macos

ITKEY_

暂无认证

  • 0浏览

    0关注

    732博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

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

ITKEY_ 发布时间:2021-03-04 22:30:37 ,浏览量:0

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 

中文输入法本身就无法使用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  
总结

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

宏问题

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

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

2021年11月11日 我在关棍节找到了解决办法,就是如果需要使用宏的时候把这个插件临时禁用一下就好了。 我的配置如下:

"临时禁用输入法切换插件,可以极大提升宏运行的效率
nnoremap s0 let g:smartim_disable = 1
"开启输入法切换插件
nnoremap s1 let g:smartim_disable = 0
参考文献

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

关注
打赏
1665243900
查看更多评论
立即登录/注册

微信扫码登录

0.0390s