プログラミンGOO

プログラミングナレッジ、ワードプレス、広告収入等について、気づき・備忘録を残していきます。

Atomエディタでショートカットキーをカスタマイズしてカーソルをカッコの外に移動する

Atomはパッケージなどで終了タグを自動補完できたりと、コーディング効率を上げるナレッジが数多くある。

閉じカッコなども自動で生成してくれて便利なのだが、カッコ内にコードを書き終わった後に、カッコの外に移動したい。

そんなとき、カーソルキーの『→』を押して移動するわけだが、このキーはキーボードの場末(一番右下)にあり、いちいち目視しなくてはならない。

これもショートカットキーでどうにかならないかを模索した。
※環境はWindows

カッコの外に移動する挙動がそもそも無いので、単語の末尾に移動する

ショートカットキーを探したが、カッコの外に移動するキーは無いようだった。(誰か知っていたら教えて!)

一番近い挙動をするものがCtrl + →で、単語の末尾に移動するというもの。
すでに単語の末尾にいる場合は閉じカッコを出た位置にカーソルが移動してくれるので、ベストではないが要件は達成できるため、これを実装する。

ショートカットキーをカスタマイズしてこの挙動をできるだけベースポジションに近いキーで入力できるようにする。

ショートカットキー一覧をカスタマイズ

まず、Atomエディターのショートカットキーの設定を行う場所。
File>Settings>Keybindings に移動する。

ここで、現在登録されているショートカットキーの一覧を見ることができる。

  • Keystroke列:入力するキー
  • Command列:実行する動作
  • Selector列:どの要素にカーソルが当たっているときの処理か

といった情報が登録されている。

内容を見るに、Selectorは『body』とすれば良いようだ。

やり方は後述するが、Commandに登録する動作を調べる必要がある。

独自のショートカットキーを登録する

ここで『your keymap file』というリンクをクリックすると、『keymap.cson』というファイルが開く。

keymap_file

独自のショートカットキーを実装する場合にはこのファイルに記述していく。

今回は、ベースポジションに近い位置でかつ、普段使用されないキーの組み合わせで登録する。

以下で設定することにした。

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と名乗る画面が開く。
この状態で、ショートカットキーを実行すると、そのショートカットキーがどんな挙動をしているのかがここに表示される。

key_binding_resolver

これをもとにCommandを調べれば、今回紹介した操作以外でもショートカットキーをカスタマイズすることができる。

ちなみに、これでも結局使いずらくてただの右移動(Commandは core:move-right)に変更しました。