windowsでAtomを使おうとしたら色々はまったのでメモ
最近Atomにお世話になっています。
WindowsとMac両方使っているのですが、どっちにもAtomを入れました。
Atom@Mac
- もともとMacのkeybindinsがEmacsのそれに近い
この特徴は非常に大きいです。具体的には
ctrl-a,e,p,k
がほとんどデフォルトなので、入れるだけでEmacs互換といっても過言じゃないのです。
といっても、Kill-ringや多くのprefix-keyを管理できることはEmacsの大きな特徴ですが、それはほかのテキストエディタでは本当に厳しいので、いいとします。
Atom@Windows
- すべてのkeybindingsがEmacsのそれに遠い
この特徴はとても厳しい。Emacs使いにとってWindowsでEmacs風のkeybindingsを求めることは誰しも色々がんばるっているところなのですが、かの有名な「るびきち」さんをして、
WindowsでEmacsをまともに動かすのは茨の道
とまでいってますから、そもそもwindowsでEmacs"風"を求めることすら茨なんです。
そう、それがたとえ、Atomであっても。
ほかのテキストエディタ
だから無理してEmacsを使わず、ほかのテキストエディタでいいじゃない
という声もよく聞きます。
そうですね、僕もnotepad++、秀丸、サクラエディタ、terapad等、ほとんどのテキストエディタを使ってきました。
が、Atomです。
この美しいエディタを何とかwindowsでも使いたい。しかも快適に。
ので、色々がんばって結果としては達成したので、備忘録です。
全部のkeybindingsを消し、さらに必要個所を全部上書き
「何いってるんだこいつ」
という気持ちはわかります。
ですが、結論、これでした。
非常に泥くさいのですが、これでやっと使えるようになったのです。
ちなみに、atomのversionは help > で参照できますが、僕のversionは 1.7.1
です。
理由
- ctrl-k
keybindinsの設定は
file > settings > keybindings > your key map file
です。
そしてこいつです。ctrl-k。
ctrl-kといえば、一行をがつっと削除してくれるkeybindingであり、これはかなり使います。
しかしなぜか現在のAtomでは、ctrl-k は 「prefix-key」として設定されており、ctrl-kに連なるすべてのkeybindingsを削除しなくては、このprefix-keyの設定は消えません。
なので、まず全部削除packeageを入れます。
packages
全部のkeybindingsを削除するのには、以下二つのpackagesをinstallしました。
File > settings > Packages
- remove-all-bindings https://atom.io/packages/remove-all-keybindings
- disable-keybindings https://atom.io/packages/disable-keybindings
はじめに上のひとつを入れましたが、全部削除できませんでした。
しかしこれを入れても、ctrl-kは真の意味では解放されません。
ctrl-e
さらにいうと、このctrl-eもなぜか検索画面の立ち上がりにbindされており、上のpackagesで全部削除できます。
keymap.cson
ようやく、自分のkeymapが入れられます。
注意点としては、非常に基本的なkeybindingsもきれいさっぱり削除されている点です。
なので、全部はじめから設定しなおす必要があります。
たとえば、上書き保存とかのkeybindです。
では僕の設定を公開します。
'.editor':
'ctrl-a': 'editor:move-to-first-character-of-line'
'ctrl-e': 'editor:move-to-end-of-line'
'ctrl-j': 'editor:backspace-to-beginning-of-word'
'ctrl-l': 'emacs:recenter'
'ctrl-h': 'core:backspace'
'ctrl-k': 'editor:delete-line'
'.workspace':
# cursor
'ctrl-p': 'core:move-up'
'ctrl-n': 'core:move-down'
'ctrl-b': 'core:move-left'
'ctrl-f': 'core:move-right'
'atom-workspace atom-text-editor:not([mini])':
'ctrl-k ctrl-0': 'unset!'
'ctrl-k ctrl-1': 'unset!'
'ctrl-k ctrl-2': 'unset!'
'ctrl-k ctrl-3': 'unset!'
'ctrl-k ctrl-4': 'unset!'
'ctrl-k ctrl-5': 'unset!'
'ctrl-k ctrl-5': 'unset!'
'ctrl-k ctrl-6': 'unset!'
'ctrl-k ctrl-7': 'unset!'
'ctrl-k ctrl-8': 'unset!'
'ctrl-k ctrl-9': 'unset!'
'ctrl-j': 'editor:delete-to-beginning-of-subword'
'body':
'ctrl-k ctrl-alt-w': 'unset!'
'ctrl-k ctrl-down': 'unset!'
'ctrl-k ctrl-down': 'unset!'
'ctrl-k ctrl-left': 'unset!'
'ctrl-k ctrl-n': 'unset!'
'ctrl-k ctrl-p': 'unset!'
'ctrl-k ctrl-right': 'unset!'
'ctrl-k ctrl-up': 'unset!'
'ctrl-k ctrl-w': 'unset!'
'ctrl-k down': 'unset!'
'ctrl-k left': 'unset!'
'ctrl-k right': 'unset!'
'ctrl-k up': 'unset!'
'alt-1': 'pane:show-previous-item'
'alt-2': 'pane:show-next-item'
'ctrl-t': 'application:new-file'
'.platform-win32, .platform-linux':
'ctrl-k ctrl-b': 'unset!'
'.platform-win32 atom-text-editor, .platform-linux atom-text-editor':
'ctrl-k ctrl-d': 'unset!'
'atom-workspace atom-text-editor':
'ctrl-k ctrl-l': 'unset!'
'ctrl-k ctrl-u': 'unset!'
'.platform-win32 .tree-view, .platform-linux .tree-view':
'ctrl-k h': 'unset!'
'ctrl-k j': 'unset!'
'ctrl-k k': 'unset!'
'ctrl-k l': 'unset!'
'ctrl-k left': 'unset!'
'ctrl-k down': 'unset!'
'ctrl-k right': 'unset!'
'.platform-win32 .tree-view, .platform-linux .tree-view':
'ctrl-k up': 'unset!'
'.platform-win32 atom-text-editor, .platform-linux atom-text-editor':
'ctrl-e': 'editor:move-to-end-of-line'
'atom-text-editor:not([mini])':
'ctrl-m': 'editor:newline'
'.platform-win32, .platform-linux':
'alt-F': 'project-find:show'
'alt-f': 'find-and-replace:show'
'atom-workspace':
'ctrl-w': 'core:close'
この設定を行うことで、色々快適に扱うことができました。
注目すべきは、ctrl-kの大量のunset!です。
それ以外の部分は好みですので、自由に変えても大丈夫ですが、ctrl-kは悲しいかなこのように全部削除する必要がありました。
「まじでこれが21世紀の The hackable text editor なのか?」
という声も出さずにはおられませんが、一応ネット上にちゃんとctrl-kを全部消すサンプルがなかったので、どなたかの助けになればと思い公開しておきます。
ほかにはこれを設定しているpackagesのkeybindingsのみ削除するサンプルはあるのですが、見てのとおりprefix-key ctrl-k は多岐に渡って使用されているようです。
lispで全部設定できるAtomacsの実装が期待されますね。割と真面目に。