How to be extremely efficient in Emacs

  |   Source

All you need to do is using keyfreq to measure how many time you execute commands.

The frequently used commands should be assigned efficient key bindings.

But you need exclude already optimized commands or commands which cannot be optimized before starting keyfreq.

For example, commands like next-line/previous-line/forward-char/backward-char could be excluded by tweaking variable keyfreq-excluded-commands.

The minimum keyfreq setup,

(require 'keyfreq)
(setq keyfreq-excluded-commands
      '(self-insert-command
        abort-recursive-edit
        forward-char
        backward-char
        previous-line
        next-line))
(keyfreq-mode 1)
(keyfreq-autosave-mode 1)

My actual keyfreq setup is more complicated.

Below is the eight month keyfreq data of my office computer,

Times Percentage Command Key
4967 12.00% evilmi-jump-items %
2892 6.99% compile , o o
2178 5.26% find-file-in-project-by-selected , k k
1953 4.72% copy-to-x-clipboard , a a
1566 3.78% paste-from-x-clipboard , z z
1227 2.96% er/expand-region , x x
897 2.17% evil-repeat .
866 2.09% ido-find-file , x f, C-x C-f
819 1.98% toggle-full-window , f f
815 1.97% etags-select-find-tag-at-point C-], , h t
721 1.74% back-to-previous-buffer , b b
682 1.65% split-window-vertically , x 2
539 1.30% find-function , h f, C-h C-f
494 1.19% counsel-recentf-goto , r r
397 0.96% counsel-git-grep , g g
376 0.91% delete-other-windows , x 1, C-x 1
372 0.90% evilnc-comment-or-uncomment-lines , c i
351 0.85% eval-expression , e e, M-:
326 0.79% evilmi-select-items , s i
320 0.77% paredit-doublequote
307 0.74% evil-filepath-outer-text-object
300 0.72% steve-ido-choose-from-recentf
295 0.71% split-window-horizontally , x 3
283 0.68% git-add-current-file , x v a
279 0.67% winner-undo , x u, , s u, C-x 4 u
278 0.67% describe-function , h d, C-h f
278 0.67% evil-goto-mark-line '
269 0.65% ido-kill-buffer , x k, C-x k
254 0.61% evil-goto-definition g d
253 0.61% pop-tag-mark M-*
251 0.61% git-messenger:popup-message , x v b, C-x v p
246 0.59% my-goto-next-hunk , n n
237 0.57% evilnc-comment-operator , ,
235 0.57% flyspell-goto-next-error , f e, C-,
214 0.52% evil-exit-emacs-state
212 0.51% browse-kill-ring-forward
210 0.51% flyspell-buffer , f b
203 0.49% evil-ex-completion
195 0.47% narrow-or-widen-dwim , x n n
173 0.42% comint-send-input
173 0.42% beginning-of-defun , b f
170 0.41% evil-surround-region <visual-state> S
161 0.39% hippie-expand M-/
151 0.36% describe-key , h k, C-h k
149 0.36% evil-space–evil-next-visual-line SPC
139 0.34% gnus-topic-select-group
138 0.33% js2-print-json-path , j p p
132 0.32% goto-line M-g g, M-g M-g
132 0.32% evil-avy-goto-subword-1 ;
127 0.31% ibuffer-mark-for-delete
127 0.31% evil-inner-single-quote
126 0.30% isearch-other-meta-char
124 0.30% term-send-up
118 0.29% isearch-other-control-char
116 0.28% evil-set-marker m
115 0.28% browse-kill-ring M-y, , y y
114 0.28% counsel-git-grep-yank-line , g l
114 0.28% evil-window-down C-w j
112 0.27% evil-jump-backward C-o
108 0.26% evil-visual-block C-v
108 0.26% evil-space–evil-previous-visual-line S-SPC
107 0.26% comint-previous-input
98 0.24% gnus-summary-exit
98 0.24% evil-search-word-backward #
98 0.24% forward-button
96 0.23% evil-paste-pop-next
95 0.23% ediff-next-difference
95 0.23% ido-imenu , i i
92 0.22% my-wg-switch-workgroup , w g g
90 0.22% counsel-git-find-file , g f
90 0.22% evilmi-delete-items , d i
87 0.21% gnus-summary-extract-mail-address
87 0.21% cliphist-paste-item , h h
84 0.20% subword-backward-kill <C-backspace>
84 0.20% paredit-backslash
83 0.20% my-yas-reload-all , y c r
81 0.20% pwd
80 0.19% previous-complete-history-element
80 0.19% wg-create-workgroup , w g t
78 0.19% evil-forward-WORD-end E
77 0.19% gnus-summary-scroll-up
76 0.18% gnus-summary-extract-cc-and-to
75 0.18% compile-goto-error
73 0.18% evil-find-char-to t
72 0.17% evil-repeat-find-char
69 0.17% evil-window-up C-w k
67 0.16% eval-last-sexp , x e, C-x C-e
66 0.16% evil-complete-next-line
66 0.16% exchange-point-and-mark C-x C-x
63 0.15% direx:previous-item
61 0.15% ediff-jump-to-difference
60 0.14% diredp-next-line
58 0.14% evilmr-replace-in-buffer , r b
58 0.14% counsel-imenu-goto , i m
56 0.14% evil-goto-mark `
55 0.13% gnus-group-unsubscribe-current-group
55 0.13% ivy-bookmark-goto
55 0.13% evil-filepath-inner-text-object
54 0.13% describe-mode C-h m
54 0.13% recenter-top-bottom C-l
54 0.13% list-packages
52 0.13% gnus-topic-mark-topic
52 0.13% kill-line C-k, <deleteline>
51 0.12% find-and-ctags-update-all-tags-force
50 0.12% evil-paste-before P
49 0.12% execute-extended-command <execute>, C-x RET
49 0.12% etags-select-quit
49 0.12% evil-inner-WORD
48 0.12% find-tag g C-]
47 0.11% diredp-previous-line
46 0.11% paredit-close-square
44 0.11% paredit-open-square
44 0.11% evil-paste-last-insertion
42 0.10% evil-inner-double-quote
42 0.10% ivy-imenu-goto
40 0.10% counsel-git-find-my-file , g m
39 0.09% cp-filename-of-current-buffer , f n
39 0.09% gnus-article-read-summary-keys
39 0.09% isearch-nonincremental-exit-minibuffer
38 0.09% sh-assignment
38 0.09% mark-whole-buffer , x h, C-x h
38 0.09% evilmi-inner-text-object
36 0.09% evilnc-comment-or-uncomment-paragraphs , c p, C-c p
36 0.09% evil-toggle-input-method C-\
35 0.08% org2nikola-export-subtree
35 0.08% subword-forward M-f, ESC <right>
34 0.08% evil-open-above O
34 0.08% compose-mail C-x m
33 0.08% evil-inner-paren
33 0.08% term-send-raw-meta
33 0.08% evil-invert-char ~
32 0.08% evil-space–evil-repeat-find-char
32 0.08% httpd-restart-at-default-directory , w r d
32 0.08% cp-fullpath-of-current-buffer , f p
31 0.07% evil-forward-WORD-begin W
30 0.07% sort-lines , s l
30 0.07% bmkp-w3m-jump
30 0.07% evilnc-copy-and-comment-lines , c c, C-c c
29 0.07% toggle-company-ispell , t c i
29 0.07% top-level
28 0.07% package-menu-mark-upgrades
27 0.07% evil-numbers/dec-at-pt -
27 0.07% end-of-defun , e f, C-M-e
27 0.07% my-setup-develop-environment
26 0.06% evil-paste-pop
25 0.06% ediff-previous-difference
25 0.06% evil-backward-WORD-begin B
25 0.06% goto-char g o, M-g c
25 0.06% w3m-close-window
25 0.06% org-mime-htmlize
25 0.06% gnus-group-exit
24 0.06% git-gutter:toggle C-x C-g
23 0.06% my-gnus-group-list-subscribed-groups
23 0.06% find-directory-in-project-by-selected , f d
23 0.06% evil-inner-curly
22 0.05% org-edit-src-exit
22 0.05% string-edit-at-point , s e
22 0.05% package-menu-mark-delete
22 0.05% ido-magic-forward-char
22 0.05% run-js , r j s
22 0.05% git-gutter-reset-to-head-parent , g s h
21 0.05% counsel-read-history
21 0.05% rcirc-send-input
21 0.05% gnus-undo
21 0.05% subword-backward M-b
20 0.05% company-select-next
20 0.05% what-cursor-position g a, g 8, C-x =
20 0.05% my-grep , q q
20 0.05% hydra-gnus-summary/body
19 0.05% ansi-term
19 0.05% evil-window-right C-w l
19 0.05% debugger-jump
19 0.05% wg-switch-to-workgroup
19 0.05% yas-abort-snippet
19 0.05% tags-loop-continue M-,
19 0.05% swiper-the-thing , s s
18 0.04% my-wg-swich-to-workgroup
18 0.04% org-edit-special
17 0.04% lisp-complete-symbol
17 0.04% my-wg-switch-to-workgroup-at-index
17 0.04% test
17 0.04% ediff-scroll-vertically
16 0.04% w3m-view-previous-page
16 0.04% evil-window-left C-w h
16 0.04% isearch-yank-kill
16 0.04% my-goto-previous-hunk , p p
16 0.04% js-beautify , j b
16 0.04% hydra-launcher/body
16 0.04% read-only-mode C-x C-q
16 0.04% message-send-and-exit
16 0.04% etags-select-goto-tag
15 0.04% evil-next-match g n
15 0.04% js2r-kill , j j k
15 0.04% string-edit-conclude
15 0.04% delete-char
14 0.03% gnus-summary-limit-to-author
14 0.03% ediff-swap-buffers
Comments powered by Disqus