mac 上 ideavim 最简单的中英文切换方式

22次阅读

共计 1050 个字符,预计需要花费 3 分钟才能阅读完成。

昨晚在 idea 上安装那个 IdeaVimExtension 打算自动切换输入法, 发现无论怎么设置都不起作用, 想找源码改改吧, 最关键的代码又是 dylib, 看不了, 怀疑是我只有系统输入法的原因, 搞了一晚上想想还不如自己搞个简单的.

其实关键就两步:1、检查当前输入法是哪个 2、切换输入法;

检查可以用 defaults read 来判断:

[[$(defaults read ~/Library/Preferences/com.apple.HIToolbox.plist AppleCurrentKeyboardLayoutInputSourceID) =~ com.apple.keylayout.ABC ]]

切换我就用 AppleScript 模拟快捷键切换

mac 上 ideavim 最简单的中英文切换方式 c.png

然后在 ideavimrc 中添加映射:

" 解决 esc 后光标左移的问题, 自动切换输入法; 这是 ideavim 的写法, 因为 ideavim 不支持 autocmd 命令, 原生 vim 中可以用 autocmd
inoremap   `^:!/Users/logan/.input-source-vim/toggle-normal.sh
nnoremap  i :!/Users/logan/.input-source-vim/toggle-insert.shi
nnoremap  I :!/Users/logan/.input-source-vim/toggle-insert.shI
nnoremap  o :!/Users/logan/.input-source-vim/toggle-insert.sho
nnoremap  O :!/Users/logan/.input-source-vim/toggle-insert.shO
nnoremap  a :!/Users/logan/.input-source-vim/toggle-insert.sha
nnoremap  A :!/Users/logan/.input-source-vim/toggle-insert.shA

默认功能: 返回 normal 模式时自动切换输入法为英文

附加功能: 当执行了 touch "$HOME/.input-source-vim/data" , 会启动 insert 模式下上一次的输入法的记录

代码主要针对于对 vim 脚本支持不够的 ideavim, 原生 vim 中不用映射, 直接用 autocmd; 也不用文件来存储上一次插入模式的输入法, 可以直接用 vim 脚本的全局变量

仓库 : https://github.com/loganoxo/input-source-vim.git

正文完
 0