- repeatable-motion 20170620.1148(in MELPA)
- Make repeatable versions of motions
概要
昨日のeasy-repeat.el(レビュー) とちょっと似た新入りパッケージを紹介します。
前後の対になるコマンドはしばしば繰り返し実行されます。
たとえばforward-word・previous-wordだったり、
next-error・previous-errorだったり、
enlarge-window・shrink-windowだったり…
そういうのを繰り返しキー(C-:)と逆繰り返しキー(C-M-:)で
実行できたらよくないですか?
org-modeでもC-c C-nを繰り返して次々と見出しに移動して、
C-c C-pで戻ったりとかもします。
この場合、 C-c C-n C-c C-n C-c C-n C-c C-p は
本設定によりC-c C-n C-: C-: C-M-:と操作できるようになります。
ただ、現時点では開発当初なので
- Emacs標準のC-x z (repeat) を使うようにする
- 対になるコマンドを登録するのではなくて類推させる
ようにすればかなり使い勝手がよくなるでしょう。
インストール
パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。
(package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("melpa" . "http://melpa.org/packages/") ("org" . "http://orgmode.org/elpa/")))
初めてrepeatable-motionを使う方は
以下のコマンドを実行します。
M-x package-install repeatable-motion
アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。
M-x package-install package-utils (初めてアップグレードする場合のみ) M-x package-utils-upgrade-by-name repeatable-motion
設定 150505050057.repeatable-motion.1.el(以下のコードと同一)
(require 'repeatable-motion) (defun repeatable-motion-remap-key (keymap next-cmd prev-cmd) "対になるコマンドを定義し、キーに割り当てられたコマンドをrepeatable-motion版に置き換える" (repeatable-motion-define-pair next-cmd prev-cmd) (dolist (command (list next-cmd prev-cmd)) (define-key keymap (vector 'remap command) (intern (format "repeatable-motion-%s" command))))) ;;; 繰り返しキー (global-set-key (kbd "C-:") 'repeatable-motion-forward) ;;; 逆繰り返しキー (global-set-key (kbd "C-M-:") 'repeatable-motion-backward) (with-eval-after-load "org" ;; C-c C-n / C-c C-p (repeatable-motion-remap-key org-mode-map 'org-next-visible-heading 'org-previous-visible-heading) (repeatable-motion-remap-key org-mode-map 'outline-next-visible-heading 'outline-previous-visible-heading) ;; C-c C-f / C-c C-b (repeatable-motion-remap-key org-mode-map 'org-forward-heading-same-level 'org-backward-heading-same-level)) ;;; C-x { / C-x } (repeatable-motion-remap-key global-map 'enlarge-window-horizontally 'shrink-window-horizontally) ;;; C-x ^ (repeatable-motion-remap-key global-map 'enlarge-window 'shrink-window) ;;; C-x → / C-x ← (repeatable-motion-remap-key global-map 'next-buffer 'previous-buffer) ;;; M-g M-n / M-g M-p (repeatable-motion-remap-key global-map 'next-error 'previous-error) ;;; M-{ / M-} (repeatable-motion-remap-key global-map 'forward-paragraph 'backward-paragraph) ;;; C-x [ / C-x ] (repeatable-motion-remap-key global-map 'forward-page 'backward-page) ;;; M-f / M-b (repeatable-motion-remap-key global-map 'forward-word 'backward-word)
実行方法
$ wget http://rubikitch.com/f/150505050057.repeatable-motion.1.el $ emacs -Q -f package-initialize -l 150505050057.repeatable-motion.1.el
本サイト内の関連パッケージ
本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。