this is the home page of
this is a modal editing mode, like vi, but the key/command map is based on command frequency and ease-of-press key positions. The keymap is largely the same as in ergoemacs-mode.
It is designed for Dvorak Keyboard Layout user. If you are not Dvorak user, you need to remap the keys to your layout.
you can use this together with ergoemacs-mode
Download at https://github.com/xahlee/xah-fly-keys
xah-fly-keys directory in
put the following in your emacs init at
(add-to-list 'load-path "~/.emacs.d/lisp/xah-fly-keys/") (require 'xah-fly-keys)
There are just 1 thing you need to config: choose a key for command mode.
by default, it is ↖ Home is for activating command mode. “'xfk-command-mode-activate”.
(global-set-key (kbd "<home>") 'xfk-command-mode-activate) (global-set-key (kbd "<end>") 'xfk-insert-mode-activate)
Put those in your emacs init.
by default, the Space key activates insertion mode while in command mode.
The mode is really simple. Just open the file
xah-fly-keys.el. There are only ≈100 lines of code, each line corresponds to a key.
the only difficulty is that you need to change muscle memory to adopt to this keyset. It'll be difficult, probably taking you few weeks.
xah-fly-keys is designed for any keyboard, including standard pc keyboard or fancy ones like
I use it on Truly Ergonomic Keyboard. Here's my current Truly Ergonomic Keyboard configuration.
note the ↖ Home and ↘ End keys. They are used to switch between command/insertion modes.
Also note the F13…F17 keys. They are used as single key or key sequence starting-keys. Majority are used in emacs, others are system-wide, mostly for controlling windows ＆ tabs.
the “Apps” on the left space bar position means the ▤ Menu key. It is used as lead key for key sequences. Key sequence is used for non-fast-repeat commands, which is about all of emacs thousand commands, minus about 30 fast-repeat commands. 〔➤ Emacs: Fast-repeat vs Non-fast-repeat Commands ＆ Keys〕
you can see the ▤ Menu key map at https://github.com/xahlee/xah_emacs_init/blob/master/xah_emacs_keybinding.el
On Mac OS X, you can set up the right ⌘ Cmd key or right ⌥ Opt to be ▤ Menu key. You can also set the Caps Lock to be ↖ Home. See: Mac OS X: Keyboard Layout, Keymapping, Keybinding, Software ⌨
here's some detail about why i created it.
i'm a QWERTY typer since ≈1987. Switched to Dvorak in ≈1993. Started to use emacs in 1997, live in it by 1998. Used default GNU keybinding up to 2006. Started to experience minor RSI discomfort a few times since 2010. 〔➤ Summary of My Typing ＆ RSI Experience 1992 〜 2013〕
i always regarded the vi modal ways a hack of the hack of the unix lineage. 〔➤ History of Emacs ＆ vi Keys〕 I'll never touch it. But starting in 2010, i had lots thoughts about keyboard efficiency, and it occurred to me the modal way is actually more efficient, for programers.
the reason is, that on average, ≈50% of key-strokes of programers are actually not data-entry (that is, 50% are actually moving cursor, copy/cut/delete text, etc.) 〔➤ Emacs's Command Frequency Statistics〕 That means, if using modal ways, 50% of the time you don't have to press key combinations to execute commands, just a single key for each command. So, the 50% of time when you call commands, each command you save about 1 or 2 key-stroke, so in total you save about 50% × 50% = 25% of key-strokes. The trade-off is that you have to constantly switch modes, which means adding a key stroke every time you do so. Overall, i estimate it saves you in the ball-park of 10% to 20% of key strokes.
i've been wanting to create and experiment with vi modal ways since 2010. While there's
viper-mode (which is a vi-emulator) and there's
evil-mode (which is based on vim (a more advanced vi)), but their key/command choices is largely historical, not a clean design based on efficiency.
see also: on vi Keybinding vs Emacs Keybinding
this ergoemacs-vi mode works well when used with ergoemacs-mode together.
Note that in ergoemacs-mode, it also has a modal way by itself. Check its documentation.