NonGNU ELPA - xah-fly-keys


ergonomic modal keybinding minor mode.
xah-fly-keys-18.1.20220921110635.tar, 2022-Sep-21, 160 KiB
Xah Lee <>
Browse ELPA's repository
CGit or Gitweb

To install this package, run in Emacs:

M-x package-install RET xah-fly-keys RET

Full description

xah-fly-keys is a efficient keybinding for emacs. It is modal like
vi, but key choices are based on statistics of command call


M-x xah-fly-keys to toggle the mode on/off.

Important command/insert mode switch keys:

xah-fly-command-mode-activate (press <home> or F8 or Alt+Space or
Ctrl+Space or menu key)

xah-fly-insert-mode-activate (when in command mode, press qwerty
letter key f.)

When in command mode:

"f" calls `xah-fly-insert-mode-activate'.

Space is a leader key. For example, "SPC r" calls `query-replace'.
Press "SPC C-h" to see the full list.

"SPC SPC" also activates insertion mode.

"SPC RET" calls `execute-extended-command-for-buffer' (if emacs
28), else `execute-extended-command'.

"a" calls `execute-extended-command'.

The leader key sequence basically replace ALL emacs commands that
starts with C-x key.

When using xah-fly-keys, you don't need to press Control or Meta,
with the following exceptions:

"C-c" for major mode commands.
"C-g" for cancel.
"C-q" for quoted-insert.
"C-h" for getting a list of keys following a prefix/leader key.

Leader key

You NEVER need to press "C-x"

Any emacs command that has a keybinding starting with C-x, has also
a key sequence binding in xah-fly-keys. For example,

"C-x b" for `switch-to-buffer' is "SPC f"
"C-x C-f" for `find-file' is "SPC i e"
"C-x n n" for `narrow-to-region' is "SPC l l"

The first key we call it leader key. In the above examples, the SPC
is the leader key.

When in command mode, the "SPC" is a leader key.

the following standard keys with Control are supported:

"C-TAB" `xah-next-user-buffer'
"C-S-TAB" `xah-previous-user-buffer'
"C-v" paste
"C-w" close
"C-z" undo
"C-n" new
"C-o" open
"C-s" save
"C-S-s" save as
"C-S-t" open last closed
"C-+" `text-scale-increase'
"C--" `text-scale-decrease'

To disable both Control and Meta shortcut keys, add the following
lines to you init.el before (require 'xah-fly-keys):

(setq xah-fly-use-control-key nil)
(setq xah-fly-use-meta-key nil)

If you have a bug, post on github.

For detail about design and other info, see home page at

If you like this project, Buy Xah Emacs Tutorial or make
a donation. Thanks.

Old versions

xah-fly-keys-18.0.20220918232928.tar.lz2022-Sep-1930.4 KiB
xah-fly-keys-18.0.20220916203045.tar.lz2022-Sep-1730.6 KiB
xah-fly-keys-18.0.20220911124616.tar.lz2022-Sep-1130.6 KiB
xah-fly-keys-17.23.20220910102958.tar.lz2022-Sep-1030.5 KiB
xah-fly-keys-17.22.20220909110152.tar.lz2022-Sep-0930.4 KiB
xah-fly-keys-17.21.20220829140316.tar.lz2022-Aug-3030.3 KiB
xah-fly-keys-17.20.20220819141933.tar.lz2022-Aug-2030.3 KiB
xah-fly-keys-17.19.20220812194903.tar.lz2022-Aug-1330.3 KiB
xah-fly-keys-17.18.20220804202952.tar.lz2022-Aug-0530.3 KiB
xah-fly-keys-17.17.20220709145456.tar.lz2022-Jul-1030.5 KiB
xah-fly-keys-17.16.20220708232047.tar.lz2022-Jul-0930.5 KiB
xah-fly-keys-17.15.20220705140319.tar.lz2022-Jul-0630.6 KiB
xah-fly-keys-17.15.20220627044859.tar.lz2022-Jun-2730.5 KiB
xah-fly-keys-17.14.20220624001507.tar.lz2022-Jun-2430.6 KiB
xah-fly-keys-17.13.20220615002353.tar.lz2022-Jun-1530.3 KiB
xah-fly-keys-17.9.20220516184525.tar.lz2022-May-1730.3 KiB
xah-fly-keys-17.7.20220429090059.tar.lz2022-Apr-2930.5 KiB
xah-fly-keys-17.6.20220426002628.tar.lz2022-Apr-2630.4 KiB
xah-fly-keys-17.5.20220416101054.tar.lz2022-Apr-1630.4 KiB
xah-fly-keys-17.5.20220415142016.tar.lz2022-Apr-1630.4 KiB