Atomはパッケージなどで終了タグを自動補完できたりと、コーディング効率を上げるナレッジが数多くある。
閉じカッコなども自動で生成してくれて便利なのだが、カッコ内にコードを書き終わった後に、カッコの外に移動したい。
そんなとき、カーソルキーの『→』を押して移動するわけだが、このキーはキーボードの場末(一番右下)にあり、いちいち目視しなくてはならない。
これもショートカットキーでどうにかならないかを模索した。
※環境はWindows
カッコの外に移動する挙動がそもそも無いので、単語の末尾に移動する
ショートカットキーを探したが、カッコの外に移動するキーは無いようだった。(誰か知っていたら教えて!)
一番近い挙動をするものがCtrl + →で、単語の末尾に移動するというもの。
すでに単語の末尾にいる場合は閉じカッコを出た位置にカーソルが移動してくれるので、ベストではないが要件は達成できるため、これを実装する。
ショートカットキーをカスタマイズしてこの挙動をできるだけベースポジションに近いキーで入力できるようにする。
ショートカットキー一覧をカスタマイズ
まず、Atomエディターのショートカットキーの設定を行う場所。
File>Settings>Keybindings に移動する。
ここで、現在登録されているショートカットキーの一覧を見ることができる。
- Keystroke列:入力するキー
- Command列:実行する動作
- Selector列:どの要素にカーソルが当たっているときの処理か
といった情報が登録されている。
内容を見るに、Selectorは『body』とすれば良いようだ。
やり方は後述するが、Commandに登録する動作を調べる必要がある。
独自のショートカットキーを登録する
ここで『your keymap file』というリンクをクリックすると、『keymap.cson』というファイルが開く。
独自のショートカットキーを実装する場合にはこのファイルに記述していく。
今回は、ベースポジションに近い位置でかつ、普段使用されないキーの組み合わせで登録する。
以下で設定することにした。
Ctrl + ;
keymap.csonファイルは最初はすべてコメントアウトされていると思うが、この末尾に以下を記述する。
'body': 'ctrl-;': 'editor:move-to-end-of-word'
この、『editor:move-to-end-of-word』に当たる部分が、さきほどのCommandに当たる挙動を示す。
これで、Ctrl + ; で単語の末尾に移動する挙動が実装できた。
ショートカットキーの動作確認方法
今回はCtrl + → のショートカットキーをCtrl + ; にコピーしたわけだ。
そのため、Ctrl + → でどのようなCommandが実行されているのかを調べた。
先ほどのkeybindingsの一覧から探しても見つかるのかもしれないが、このページではなぜか文字列検索ができなかった。
目視で探すのは大変なので別の方法を紹介する。
まず、やりたい挙動を再現してみる。
実際のエディタの画面で、カッコ内のテキストを選択し、Ctrl + → で、単語の末尾に移動することを確認する。
それができたら、Ctrl + > というショートカットキーを押す。
すると、Key Binding Resolverと名乗る画面が開く。
この状態で、ショートカットキーを実行すると、そのショートカットキーがどんな挙動をしているのかがここに表示される。
これをもとにCommandを調べれば、今回紹介した操作以外でもショートカットキーをカスタマイズすることができる。
ちなみに、これでも結局使いずらくてただの右移動(Commandは core:move-right)に変更しました。