bindkey [-d] [-m] [[-k|-t] string [command]] bindkey :show normal user mapping table bindkey string :remove user binding for "string" bindkey string command :change user binding. bindkey -t string command :change user binding, timeout infinite. bindkey -d :show defaults bindkey -d string :remove default binding for "string" bindkey -d string command :change default binding. bindkey -d -t string command :change default binding, timeout infinite. bindkey -m :show mark-routine bindings bindkey -m string :remove mark binding for "string" bindkey -m string command :change mark binding. bindkey -m -t string command :change mark binding, timeout infinite. -k: is a termcap identifier rather than a sequence of keystrokes. (-k and -t are mutually exclusive: termcap codes always have finite timeout.) maptimeout :show current timeout value maptimeout msec :set intercharacter timeout for string mapping. mapdefault :use default mapping for the following keystroke mapnotnext :pass through a single keystroke unmapped Priority of mappings: If you are in the mark-routine, check mark mapping first. If no mapping found there or not in mark-routine, use normal user mapping. If no mapping found there, try default mapping table. Else pass character unmapped. Example that uses the F1 key to switch to window 1: bindkey -k k1 select 1 Example that makes "foo" an abbreviation for the word "barfoot": (Timeout is disabled, so that you can type slowly) bindkey -t foo stuff barfoot Example to help you insert the word "foo" when the above binding is active: This makes CTRL-T an escape key that prevents keymapping. Type ^Tfoo to get foo and type ^T^T to get ^T. bindkey "\024" mapdefault And that's it!