V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
loganovo
V2EX  ›  Apple

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

  •  
  •   loganovo · 87 天前 · 586 次点击
    这是一个创建于 87 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    检查可以用 defaults read 来判断:

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

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

    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

    1 条回复    2024-07-04 10:00:00 +08:00
    chendy
        1
    chendy  
       86 天前
    赞一个👍🏻,虽然已经肌肉记忆 esc 接切换输入法了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2366 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 15:28 · PVG 23:28 · LAX 08:28 · JFK 11:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.