Atom(Ver1.5.3)のキーバインドを変更してみる

PCの作業ツールとして最もポピュラーなのはエディタだ
永らくサクラエディタを使ってきたが最近になってSublimeTextというエディタを見つけてエディタの進化に驚きながら使いはじめていた。
あちこちで「SublimeTextと恋に落ちた」というタイトルで評判になっているようにとても良く出来たエディタなので無料で使うこともできるのだが、基本はシェアウェアとなっている。

最近になって急速にシェアを伸ばしてきたAtomというエディタがあってこちらは完全にフリーウェアだ。
私はWordstar,DelphiのDOSIDE系のキー配列が好きなのでキーバインドをカスタマイズ出来ないエディタには見向きもしない
最初SublimeTextとAtomを試してみてAtomのキーカスタマイズが取っつき難かったので消去法でSubulimeTextを使っていたが、
やはり基本シェアウェアというのがどうも引っかかるので改めてAtomのキーカスタマイズにトライして、なんとか使えるようになった。

出来てみるとキーバインドの変更に関してはSublimeTextより簡単な気がしてきた。

Atomのキーバインド変更方法についてはまだ情報がすくないようなので参考までに定義ファイルを公開してみる。

判りにくかったのは他で定義しているキーを上書きする方法で、「どうしてもうまくいかないときには元の定義ファイルを書き換えてしまえ」などと書いてあるが元の定義ファイルを変更しても上書きが出来ないし元の定義ファイルを編集しようとすると圧縮形式になっているみたいで直接編集することも出来なかった(Ver1.5.3だから?)

※元の定義ファイルを開くことは簡単で、コマンド(Ctrl+.)を実行すると下のウィンドウに押したキーに応じた定義箇所が表示される。

メニューの[Open your keymap]からユーザー定義キーマップを開いてキーバインドの変更を始めていきなり躓いたのがctrl-sの書き換えだ
このキーはwin32.jsonの中で定義されているがそれを無効に出来るまでに右往左往してしまった。

'body .native-key-bindings':
'ctrl-s': 'native!' # 他での定義を上書き

判ったのは
‘body .native-key-bindings’:という部分は元の定義で書いてある部分をそのまま引用しなければならないこと
定義を無効にするキーワードには unset! と native! があってどちらかを使うことだが、何故かctrl-sのみはnative!を指定しないと無効にできなかった。
unset!で無効にできる定義は単に新しい定義で上書きをしただけで使えるみたい。
そして’body .native-key-bindings’:の部分は他の定義を変更する場合は正確に引用しなければならないが新しく定義するためには何でもOKらしい

# 左へ移動
'ctrl-s': 'core:move-left'

この core: という部分に関しては動作ごとに決まっていて他の定義を参照して ‘core:move-left’をそのまま記述しなければならない
※最初この部分をeditorで使うのだからeditorと書くのかと思って動作しなくて嵌った

# ===================================================================
# like Delphi DOS IDE
# ===================================================================
'atom-workspace atom-text-editor:not([mini])':
# ファイルの先頭へ移動
'ctrl-q ctrl-r': 'core:move-to-top'
# ファイルの最後へ移動
'ctrl-q ctrl-c': 'core:move-to-bottom'
# 単語選択
#'ctrl-w': 'editor:'
#'body':
# 'ctrl-z': 'unset!'

'body .native-key-bindings':
'ctrl-s': 'native!' # 他での定義を上書き
'.platform-win32':
'ctrl-t': 'unset!'

'.platform-win32 atom-text-editor, .platform-linux atom-text-editor':
# 左へ移動
'ctrl-s': 'core:move-left'
# 右へ移動
'ctrl-d': 'core:move-right'
# 下へ移動
'ctrl-x': 'core:move-down'
# 上へ移動
'ctrl-e': 'core:move-up'
# 下のページ
'ctrl-c': 'core:page-down'
# 保存
'ctrl-k ctrl-s': 'core:save'
# 上のページ
'ctrl-r': 'core:page-up'
# 右の単語
'ctrl-f': 'editor:move-to-next-subword-boundary'
# 左の単語
'ctrl-a': 'editor:move-to-previous-subword-boundary'
# 行頭へ移動
'ctrl-q ctrl-s': 'editor:move-to-first-character-of-line'
# 行末へ移動
#'ctrl-z': 'editor:move-line-up'
'ctrl-q ctrl-d': 'editor:move-to-end-of-screen-line'
# カット
'ctrl-y': 'core:cut'
# インデント
'ctrl-i': 'editor:indent'
# バックスペース
'ctrl-h': 'core:backspace'
# 削除
'ctrl-g': 'core:delete'
'ctrl-t': 'editor:delete-to-end-of-word'
# grep検索(プロジェクト)
'ctrl-q ctrl-f': 'project-find:show'
# ファイルの先頭へ移動
'ctrl-q ctrl-r': 'core:move-to-top'
# ファイルの最後へ移動
'ctrl-q ctrl-c': 'core:move-to-bottom'
# ブックマークの設定・解除
'ctrl-2': 'bookmarks:toggle-bookmark'
# 前のブックマークへ
'ctrl-1': 'bookmarks:jump-to-previous-bookmark'
# 次のブックマークへ
'ctrl-3': 'bookmarks:jump-to-next-bookmark'