Atom @Windowsで Emacs風 に快適に動かすためにしたこと。  Emacs keybindins の実現。 ctrl-kの削除。

## 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の実装が期待されますね。割と真面目に。