跳转到内容
彼岸论坛
欢迎抵达彼岸 彼岸花开 此处谁在 -彼岸论坛

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


小天管理

已推荐帖子

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

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

检查可以用 defaults read 来判断:

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

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

jRxTHTP.png c.png

然后在 ideavimrc 中添加映射:

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

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

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

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

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

意见的链接
分享到其他网站

加入讨论

您现在可以发表并稍后注册. 如果您是会员,请现在登录来参与讨论.

游客
回复主题...

×   粘贴为富文本.   粘贴为纯文本来代替

  只允许使用75个表情符号.

×   您的链接已自动嵌入.   显示为链接来代替

×   您之前的内容已恢复.   清除编辑器

×   您无法直接粘贴图片.要从网址上传或插入图片.

  • 游客注册

    游客注册

  • 会员

    没有会员可显示

  • 最新的状态更新

    没有最新的状态更新
  • 最近查看

    • 没有会员查看此页面.
×
×
  • 创建新的...