LoginSignup
2
3

More than 5 years have passed since last update.

VimでInsertモードからNormalモードに切り替える時に自動で英数入力に切り替える (for Mac High Sierra)

Last updated at Posted at 2018-06-14

VimのNormalモードで日本語入力が鬱陶しい

latexの文章を自分のテキストエディタで書いている時,日本語入力のままNormalモードでコマンドを打ってしまい,Vim操作にならず手間がかかることが多々あったので,InsertからNormalに切り替えるときに自動で英数入力に切り替える方法を調べた.

KarabinerではSierra, High Sierraでの方法がわからない

キーバインドを自由に設定できるKarabinerでは,Sierra,High Sierraにおいて複数キーを複数キーにリマップすることができないらしい.自分でもやってみたがうまくいかなかった.

Hammerspoonを利用するとできた

Hammerspoonは,macOSに関する様々な処理を自動化するツール.

https://blog.freedom-man.com/macos-sierra-keyremap/
このサイトを参考に,設定してみる.
Hammerspoonをインストールし,起動 -> Enable Accessibilityをクリック -> セキュリティとプライバシーのプライバシーでHammerspoonにチェック
このあと,configをいじる.
File -> Open configで,init.luaファイルを編集.

init.lua

local function keyCode(key, modifiers)
   modifiers = modifiers or {}
   return function()
      hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), true):post()
      hs.timer.usleep(1000)
      hs.eventtap.event.newKeyEvent(modifiers, string.lower(key), false):post()      
   end
end

local function keyCodeSet(keys)
   return function()
      for i, keyEvent in ipairs(keys) do
         keyEvent()
      end
   end
end

local function remapKey(modifiers, key, keyCode)
   hs.hotkey.bind(modifiers, key, keyCode, nil, keyCode)
end

remapKey({ 'ctrl' }, ']',  keyCodeSet({
    keyCode('escape'),
    keyCode(';', {'ctrl', 'shift'})
}))

hs.hotkey.bind({"cmd", "alt", "ctrl"}, "R", function()
  hs.reload()
end)
hs.alert.show("Config loaded")

コードの説明は下の参考にしたサイトでみていただければと思う.
このようにファイルを設定した後,File -> Reload configで,configをリロードする.
これでInsertからNormalにスムーズに切り替えができるようになった.
ちなみに,カタカナ入力をオンにしている場合はうまくいかない場合があるので,
システム環境設定 -> キーボード -> 入力ソース -> 日本語
から,カタカナ,半角カタカナのチェックを外しておくとうまく行くと思う.

めっちゃ参考にしたサイト:
https://blog.freedom-man.com/macos-sierra-keyremap/

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3