LoginSignup
1
1

More than 5 years have passed since last update.

vimキーバインドを利用するアプリをより使いやすくする方法(Macユーザ向け)

Last updated at Posted at 2017-06-13

はじめに

vimキーバインドを利用するアプリケーションでは、エディットモード中に日本語入力を行った場合、
Escしても日本語入力モードのままの状態になりすぐにコマンドモードが利用できない。
その都度英数入力に切り替える必要のないように、特定アプリケーションのみEscを押下した際に、日本語入力がOFFになるように設定を行う。

設定にはキーバインドをカスタマイズするアプリKarabinerを利用する。

Karabinerの設定

実現したい動作

Escキーが押下されると、日本語入力をOFFにしつつ(英数キーを押下した挙動)、エディットモードから抜ける(Escキーを単体で押下した挙動)為の動作を定義する。

設定箇所

Karabinerには様々な挙動がデフォルトで用意されているが、独自の定義を行うためには個別にxmlで定義を行う必要がある。
この個別の設定はprivate.xmlファイルとして行う。private.xmlは以下で指定して読み込む。

Preference > Misc&Uninstall > Open private.xml

private.xmlの設定

例としてターミナルアプリ(Mac標準TerminalやiTermなど)MarkdownエディタのBoostnoteを対象として設定する。

<?xml version="1.0"?>
<root>
  <appdef>
    <appname>BOOSTNOTE</appname>
    <equal>com.maisin.boost</equal>
  </appdef>
  <item>
    <name>Escape to EISUU+Escape only terminal</name>
    <identifier>private.remap.jis_escape2eisuuAndEscape_terminal</identifier>
    <only>TERMINAL, BOOSTNOTE</only>
    <autogen>
      --KeyOverlaidModifier--
      KeyCode::ESCAPE,
      KeyCode::JIS_EISUU,
      KeyCode::ESCAPE
    </autogen>
  </item>
</root>

設定のポイントは以下の3つ

  1. 適用するアプリケーション名(アプリケーション群のまとまり)の定義
  2. 適用するアプリケーション名の指定
  3. 動作の定義

1. 適用するアプリケーション名(アプリケーション群のまとまり)の定義

アプリケーション名は <appdef> タグで定義する。
<appname> タグにアプリケーション名、 <equal> タグにアプリののBundle Identifierを指定する。
複数のBundle Identifireを指定する場合は <equal> タグを複数追記する。
Bundle Identifierの確認方法は以下を参照する。

該当のアプリケーションに対応するものがあれば、プリセットのアプリケーション名を利用できる。
プリセットのアプリケーション名は以下を参照。

設定例においてターミナルアプリ(TERMINAL)をアプリケーション名として定義(<appdef> タグ内の設定)してないのはプリセットにリソース名が登録済みであるため。

参考までにTERMINALのプリセット定義は以下の通り。

  <appdef>
    <appname>TERMINAL</appname>
    <equal>com.apple.Terminal</equal>
    <equal>iTerm</equal>
    <equal>net.sourceforge.iTerm</equal>
    <equal>com.googlecode.iterm2</equal>
    <equal>co.zeit.hyperterm</equal>
    <equal>co.zeit.hyper</equal>
  </appdef>

2. 適用するアプリケーション名の指定

<only> タグに適用したいアプリケーション名を指定する。
ここで述べるアプリケーション名は単一のアプリケーションではなく、カテゴライズした複数のアプリの総称として利用する。

3. 動作の定義

<autogen> タグの中にあるKeyCodeは上から、

  • 挙動変更するキー
  • 挙動変更した後のキー
  • 追加したい挙動のキー

を定義する。

補足

<name> タグで設定に名前をつける。Preference上ではこの名前で設定を確認できる。
<identifier> タグで設定に固有のIDをつける。システム内でユニークになるような命名規則を自分で考える。

参考

https://pqrs.org/osx/karabiner/xml.html.ja#prepared-appdef
https://pqrs.org/osx/karabiner/xml.html.ja#syntax-__KeyOverlaidModifier__

1
1
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
1
1