27
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-04-18

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

 はじめに上のひとつを入れましたが、全部削除できませんでした。
 しかしこれを入れても、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の実装が期待されますね。割と真面目に。

 

27
27
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?