我是Emacs新手。我目前正在学习导航,编辑等基本命令。
一些按键组合需要更长时间才能完成......他们通常需要更多按键才能按下或更高程度的手指位置杂技:)。我想知道是否有人知道是否有现有的Emacs插件:
为什么呢?也许它太过分了,但如果我能够分析这样的日志文件并确定哪些命令具有高使用频率以及较长的完成时间,那么它可能会节省我将来的时间。这些命令可以绑定到我的谦卑手指更容易到达的键,例如:)。
我自己写这个可能是一个很好的学习练习,但如果解决方案已经存在,我可能更愿意节省时间。
答案 0 :(得分:5)
在这里,请使用此lisp代码:
(global-set-key (kbd "C-t") 'timed-key-seq)
(defvar timed-keys-hash (make-hash-table :test 'equal))
(defun timed-key-seq ()
(interactive)
(let* ((t-beg (current-time))
(key (read-key-sequence "command:"))
(t-end (current-time))
(t-diff (time-subtract t-end t-beg))
(data (gethash key timed-keys-hash)))
(if data
(destructuring-bind (times . time) data
(puthash key (cons (1+ times) (time-add time t-diff))
timed-keys-hash))
(puthash key (cons 1 t-diff) timed-keys-hash))
(call-interactively (key-binding key))))
(defun anb-report ()
(interactive)
(let (entries)
(maphash (lambda (key data)
(push
(format "%s:\t%sx = %s ms\n"
key (car data)
(format-time-string "%3N" (cdr data)))
entries))
timed-keys-hash)
(message (apply #'concat entries))))
缺点是你需要将timed-key-seq
绑定到某个东西,
我建议 C-t 。然后你只需用 C-t 作为所有命令的前缀。
也许有人可以建议defadvice
来确保这个功能
每次都要调用,而不必加前缀。
使用anb-report
生成报告。它会告诉你你打过多少次
每个组合以及它们合在一起的毫秒数。