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