edit-at-point 20150716.624(in MELPA)
edit(copy,cut..) current things(word,symbol..) under cursor

概要

edit-at-point.el はカーソル位置のthingを編集するコマンド群です。

thingはword/symbol/str/line/paren/defun、
actionはcut/copy/delete/paste/dupで、
総当たり的にコマンドが定義されています。

たとえば単語をカットするコマンドはM-x edit-at-point-word-cutです。

さすがに全コマンドをキーに割り当てるのは現実的ではないので、
C-:でthingとactionを選択できるようにしておきました。

それでも新しいキーバインドを消費することを考えたら
M-wでまかなう easy-kill.el(レビュー) の方が使いやすいでしょう。

作者はサンプルの設定でC-S-英字にすべてのコマンドを割り当てていますが、
記憶に超絶負荷がかかるので本当に使いこなせているかは正直怪しいです。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))

初めてedit-at-pointを使う方は
以下のコマンドを実行します。

M-x package-install edit-at-point

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name edit-at-point

設定 150916051458.edit-at-point.el(以下のコードと同一)

(require 'edit-at-point)
(defvar edit-at-point-thing-alist
  '(("w" . "word")
    ("s" . "symbol")
    ("S" . "str")
    ("l" . "line")
    ("p" . "paren")
    ("d" . "defun")))
(defvar edit-at-point-action-alist
  '(("C-w" . "cut")
    ("M-w" . "copy")
    ("C-d" . "delete")
    ("C-y" . "paste")
    ("d" . "dup")))
(defun edit-at-point-ensure-input (func)
  (let (ans)
    (while (progn (setq ans (funcall func))
                  (not ans)))
    ans))
(defun edit-at-point-prompt (header alist)
  (edit-at-point-ensure-input
   (lambda ()
     (assoc-default
      (format-kbd-macro
       (vector
        (read-event
         (format "%s :: %s" header
                 (mapconcat (lambda (x) (format "%s:%s" (car x) (cdr x)))
                            alist " ")))))
      alist))))
(defun edit-at-point-dispatch ()
  (interactive)
  (let* ((thing (edit-at-point-prompt "Edit at point" edit-at-point-thing-alist))
         (action (edit-at-point-prompt "Action" edit-at-point-action-alist)))
    (funcall (intern (format "edit-at-point-%s-%s" thing action)))))
(global-set-key (kbd "C-:") 'edit-at-point-dispatch)

実行方法

$ wget http://rubikitch.com/f/150916051458.edit-at-point.el
$ emacs -Q -f package-initialize -l 150916051458.edit-at-point.el

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。