一套适合 vim 和 macOS 用户的输入法切换方案

查看 43|回复 1
作者:kxccc   
需求
日常工作中经常使用 neovim 码代码和写文档,有时也在别的编辑器上使用 vim 插件,如果没有特殊设置,vim 模式会和中文输入法“打架”
因此我需要实现下面的特殊功能:
[ol]
  • caps 键替换成 esc ,方便切换回 normal 模式
  • 按下 esc 键后,输入法切换成英文,方便之后敲指令
  • shift 键切换中英文输入
  • 切换到不同应用自动切换中英文输入
    [/ol]
    有了这些功能可以大幅的提升 vim 的输入体验
    尝试使用鼠须管(最后放弃)
    鼠须管自带的功能能满足后 3 点的需求,对于第 1 点需求可以在 macOS 的设置中实现。刚开始的时候感觉很完美,但在实际的使用过程中发现,鼠须管没有长句联想能力,很影响输入效率(即使使用了几个月还是不能适应),鼠须管的 shift 切换在一些情况下也有 bug ,对我来说是高频触发。因此在我发现另一种方法后,就放弃了使用鼠须管。
    使用 Karabiner
    无意中在 V2EX 上搜到这篇 帖子,根据帖子的配置,我用 Karabiner 实现了以上的需求。
    前提条件
  • 使用系统自带的 ABC 输入法来输入英文,而不使用第三方输入法的英文状态
  • 再选择一个输入法来输入中文,目前我选择的是微信输入法

    只设置以上两种输入法,因为不使用第三方输入法的英文状态,所以我们需要关闭第三方输入法的 shift 切换功能,确保不会切换过去。shift 在之后会被 Karabiner 用来控制 ABC 输入法和第三方输入法之间的切换(即中英文切换)
    使用方法
    [ol]
  • 对于上面的第一点需求,在 Karabiner 的 Simple Modifications 设置 caps 映射为 esc 即可
  • 对于第 2 、3 点需求,可以导入这个放在 GitHub 上的 Complex Modifications 配置
    它的实现原理是:当单击 esc 键后,如果当前不是英文输入法,会模拟单击一次 F18 键;当单击 shift 键后,会模拟单击一次 F18 键。因此,我们只需在 系统设置-键盘-键盘快捷键-输入法 里,将输入法切换的快捷键设置为 F18 就能实现单击 esc 或 shift 进行切换。
  • 对于第 4 点需求,可以在 App Store 上搜索“自动切换输入法”,这个软件的付费版挺好用的(可能也有别的替代)
    [/ol]

    输入, 切换, Shift, esc

  • gpt5   
    用系统快捷键切换输入法,不知道你是摸索过后选了这种方法,还是无意中选对了。
    karabiner 有命令可以直达某种输入法( 2 种以上语言切换时很方便),但是这种方法对中文输入法有 bug ,时常是图标边成中文了,但实际上输入法没变。我当时琢磨了好久,才想到判断当前语言然后模拟系统快捷键来切换😂
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部