これを書いたら、EmacsでSpacemacsっぽい挙動になってめっちゃ快適。
素直にSpacemacs使えよって話ですが・・・
~/.emacs.d/init.el
(require 'evil)
(evil-mode t)
(if (evil-mode)
(progn
(bind-keys :map evil-visual-state-map
("TAB" . indent-for-tab-command))
(bind-keys :map evil-normal-state-map
("SPC b" . ido-switch-buffer)
("SPC f" . projectile-find-file)
("SPC a" . helm-do-ag-project-root)
("SPC x" . smex)
("SPC s" . save-buffer)
("SPC d" . dired-jump)
("SPC k" . kill-this-buffer)
("SPC r" . ido-recentf-open)
("SPC 1" . delete-other-windows)
("SPC 0" . delete-window)
("SPC q" . delete-frame)
("SPC t" . xref-find-definitions-other-window)
("SPC y" . browse-kill-ring)
("SPC u" . undo-tree)
("TAB" . indent-for-tab-command))
(bind-keys :map evil-insert-state-map
("C-g" . evil-normal-state)))
ただ、相性の問題なのか、web-mode
でちょいちょい不具合が起こったので、Evilを使うのはやめておきます。
GUIのEmacsならもうちょっとまともに動くかもしれない。
ポエム
しかしながら、Vimの操作性も捨て難いですな。
ci(
とか、テキストオブジェクトの使い勝手が良い。
あとはgi
、gv
、dd
あたりがやっぱり馴染むなあ。
究極カスタマイズした、こちらの記事も気になる。
Emacsでのmyvim-mode、その結果のガラパゴスインターフェース
http://d.hatena.ne.jp/mizchi/20100807/1281106431
スペースキーは押しやすいから、もっと使っていきたいんだよなあ。
evil-mode
からインサートした時に、evil-mode nil
したいんだけどやり方がわからない。
(bind-key* "ESC" evil-mode)
(add-hook 'evil-insert-mode-hook
(lambda() (evil-mode nil)))
みたいなことがしたいんだけど、やり方が分からない。
post-command-hook
使えばいいのか・・・?
- 追記
普通にできました。
(defalias 'evil-insert-state 'evil-emacs-state)
(define-key evil-emacs-state-map (kbd "<escape>") 'evil-normal-state)
Spacemacsの C-z
が evil-emacs-state
に割り当てられていたので、見つかった。