Normal mode に切り替えて英語モードにする

·

1 min read

Summary

  • Vim の Insert mode から Normal mode に切り替えるときに、英語モードにしたい

  • Karabiner-Elements, macism を利用して、<Esc> を送信すると同時に、英語モードに切り替える

  • っj という1億人の日本人 vimmer の呪いを解放する

前提

Mac

  • System Settings → Keyboard → Keyboard Shortcuts → Modifier Keys

  • Caps Lock key: Control

  • System Settings → Keyboard → Input Sources: U.S.

Karabiner-Elements

brew install --cask karabiner-elements

macism

brew tap laishulu/homebrew
brew install macism

事前準備

  1. macism の実行パスをメモる
which macism
/opt/homebrew/bin/macism
  1. macism で英語モードをメモる。英語モードにした状態で以下を実行する。
macism
com.apple.keylayout.US

実装

  • caps lock 単体を押すと <Esc> が送信される

  • caps lock + hoge のキーバインドで <C-hoge> が送信される

  • <Esc> が送信されると /opt/homebrew/bin/macism com.apple.keylayout.US が実行される

  • Karabiner-Elements の Complex Modifications に Add your own rule を行う

{
  "description": "Transform Caps Lock: Escape When Pressed Alone (Switch to English Mode)",
  "manipulators": [
    {
      "from": {
        "key_code": "caps_lock",
        "modifiers": { "optional": ["any"] }
      },
      "to": [
        {
          "key_code": "left_control",
          "lazy": true
        }
      ],
      "to_if_alone": [
        { "key_code": "escape" },
        { "shell_command": "/opt/homebrew/bin/macism com.apple.keylayout.US" }
      ],
      "type": "basic"
    }
  ]
}

めっちゃ便利!

vim, nvim では別の方法 im-select を利用しているのだけど、zed でも同じことを実現したかったので作ってみた。