ほげにっき

hogedigoの日記

(macOS) (Karabiner-Elements) vi以外でもhjklキーでカーソル移動する

明けましておめでとうございます。 本年も宜しくお願い申し上げますm( )m

早速ですが、私はかれこれ20年くらいのvi使いです。
vimmerと言わないのはvim以外のviクローンを使っていた期間が長いからです)

ご存知の通りviではカーソル移動はhjklで行います。
慣れるとホームポジションのままカーソル移動できるのはとても快適です。

でもvi以外のアプリを使っているときは通常カーソルキーで移動せざるを得ません(マウスとかトラックパッドは一旦おいときますw)。
viのカーソル移動が指に染み付いている人はわざわざカーソルキーまで指を移動させるのが苦痛ですよね?(苦痛でない人には本記事は全く役に立ちません🙇‍♂️)

本記事ではKarabiner-Elementsという神ツールを利用してhjklキーでカーソル移動できるようにする方法を紹介します。

免責事項

この設定で酷使した為かは不明ですが、前に使っていたMacBook ProのJキートップがバカになりましたw

お亡くなりになったJキートップ

MacBookPro (15-inch, 2017)でキーボードに問題があったバージョンなので、そのせいもあるかとは思いますが・・

本記事紹介のツールや設定のご利用は利用者ご自身の判断と責任で行うようお願いいたします。🙇‍♂️🙇‍♂️🙇‍♂️

環境

※ 以前Sierra 〜 Mojave でも動作していました。

Karabiner-Elementsインストール

Macキーバインドをかなり自由に変更できるツールです。
↓よりダウンロード&インストールします。

pqrs.org

右command+hjklをカーソルに

タイトルでは「hjklキーで」と書いてしまいましたが実際には同時に押す修飾キーが必要です。スミマセン。
修飾キーなしだと通常のhjklタイプと区別つかないので・・・。

どの修飾キーを使うかは好みになりますが、私は右commandキーを割り当てています。
optionやfn、Shiftキーだとカーソルとの組み合わせ移動に不都合が生じたり、controlキーだとショートカットに不都合があって最終的に右commandに落ち着いたのですが、詳しい経緯は失念しました。他の修飾キーにしたい人はいろいろ試してみて下さい。

右commandキー+jjklをカーソルに割り当てるルールはKarabiner-ElementsにExamplesとしてデフォルトで用意されています。

メニューバーのKarabiner-Elementsから、「Preferences」を開きます。
「Complex modifications」→「Rules」を開き、「Add Rule」ボタンをクリックします。

f:id:digo:20200109170100p:plain
ルールの追加

「Change right_command+hjkl to arrow keys」の「Enable」ボタンをクリックします。

f:id:digo:20200109170700j:plain
Ruleの選択

これで、右command+hjklでカーソル移動できる様になりました!!\(^o^)/

「かな」キーを右commandに

実はまだ不満があります。

右commandですが、ホームポジションから親指で押すにはちょっと窮屈なのですよね。

そこで、ちょうど右手親指のところにある「かな」キーを利用します。

f:id:digo:20200109172104j:plain
かなキー万歳!

「かな」キーと他のキーを同時に押した場合は「かな」キーを右commandとして扱う様に設定します。さらに「かな」キー単独の場合は通常通り「かな」として動作する様にします。

下記ファイルをダウンロードして ~/.config/karabiner/assets/complex_modifications/ ディレクトリにコピーします。 https://github.com/hogedigo/dotfiles/blob/master/.config/karabiner/assets/complex_modifications/kana_rightcmd.json

前項の同様の手順でルール追加画面を開き、「かなを単体で押したときに、かなキーを送信する。他のkeyと併用された場合はright_commandを送信する」の「Enable」ボタンをクリックします。

f:id:digo:20200109175230j:plain
ルールの追加

これで「かな」+hjklでカーソル移動できる様になりました!\(^o^)/ 左command、option、shift、controlとの併用もOKです!

自分はUSキー配列派ですが、この「かな」キーが欲しいが為にキーボードは必ずJISを購入して、US配列にバインドして使用しています。
US配列バインドもKarabiner-Elementsでできるみたいですが、自分は別の方法を利用しています。
詳しくは前の記事に書きました。

TODO

カーソル移動しかけて「かな」キーだけ押して中断した場合に、かな変換がかかってしまうのが唯一の不満として残っています。

頻度は多くないのでそれほどストレスないですが、今後の課題としたいと思います。

捕捉

Karabiner-Elementsルール追加画面に「Import more rules from the internet (open a web browser)」というボタンがあります。

f:id:digo:20200110043710j:plain
Import more rules

これをクリックするとインターネットからいろいろな設定済ルールをダウンロードできます。

Emulation Modeの「Vi Mode (rev 5)」や「Vi Style Arrows」に、hjklをカーソルとして使うルールがいくつか見られます。本記事設定ではしっくりこなかった方はこれらを試してみるのもよいかと思います。