Atom で矩形選択するためのキーバインドを変更する (キーマップの重複を回避する)

矩形選択のための、複数行選択のキーバインドが「Ctrl + Alt + ↑↓」なのが気に入らず、「Alt + ↑↓」にしたくて、その実現までのメモ。

(「Alt + ↑↓」でやりたいのは Sakura エディタでの慣れがあったせいです…悔しい。)

キーバインドの一覧は「設定」の「キーバインド」から検索できる。

ctrl-alt-up」「ctrl-alt-down」で検索すると、それぞれ「editor:add-selection-above」「editor:add-selection-below」ってのがヒットする。編集用のコードをクリップボードに取り込めるボタンがリストの左端に付いてるので、これをクリックしてコピー。

設定ファイルは「ファイル」→「キーマップを開く」で開ける keymap.cson。CSON ってのは CoffeeScript Object Notation の略で、CoffeeScript 形式の JSON ってことみたい。

これに先ほどコピーしたコードを貼り付けて軽く修正し、以下のようにする。

// 矩形選択を Ctrl + Alt ではなく Alt だけでできるようにする
'body':
  'alt-up': 'editor:add-selection-above'
  'alt-down': 'editor:add-selection-below'

しかし効かない。

よくよく見ると、「alt-up」「alt-down」のキーバインドに、Emmet パッケージのキーバインド「emmet:increment-number-by-01」「emmet:decrement-number-by-01」が既に存在していた。

キーが重複しているようなので、このキーバインドもコードをコピって、keymap.cson で無効にしてやる。既存のキーマップを無効にするには unset! と書くみたい。

// 矩形選択を Ctrl + Alt ではなく Alt だけでできるようにする : Emmet のキーバインドが重複していたので unset! で無効にする
'atom-text-editor:not([mini])':
  'alt-up': 'unset!'
  'alt-down': 'unset!'

というわけで、keymap.cson に加えた変更は全体で以下のようになる。

// 矩形選択を Ctrl + Alt ではなく Alt だけでできるようにする : Emmet のキーバインドが重複していたので unset! で無効にする
'atom-text-editor:not([mini])':
  'alt-up': 'unset!'
  'alt-down': 'unset!'

// 矩形選択を Ctrl + Alt ではなく Alt だけでできるようにする
'body':
  'alt-up': 'editor:add-selection-above'
  'alt-down': 'editor:add-selection-below'

これで「Alt + ↑↓」で矩形選択 (複数行選択) ができるようになった。イェ~イ。

ついでに Sublime Style Column Selection も入れた。Alt + マウスドラッグで矩形選択ができるというもの。これも良い感じ。