readline: Key bindings
Bash uses the readline library to manage the input. It's a very powerful line editor in its own right with both emacs and vim inspired keybindings. This page lists my key bindings (found on MacOS).
Default (emacs mode) bindings:
C-_ (readline)undo
C-? (readline)backward-delete-char
C-] (readline)character-search
C-@ (readline)set-mark
C-a (readline)beginning-of-line
C-b (readline)backward-char
C-d (readline)delete-char
C-e (readline)end-of-line
C-f (readline)forward-char
C-g (readline)abort
C-h (readline)backward-delete-char
C-i (readline)complete
C-k (readline)kill-line
C-l (readline)clear-screen
C-m (readline)accept-line
C-n (readline)next-history
C-o (readline)operate-and-get-next
C-p (readline)previous-history
C-q (readline)quoted-insert
C-s (readline)forward-search-history
C-u (readline)unix-line-discard
C-v (readline)quoted-insert
C-w (readline)unix-word-rubout
C-x! (readline)possible-command-completions
C-x( (readline)start-kbd-macro
C-x) (readline)end-kbd-macro
C-x@ (readline)possible-hostname-completions
C-x* (readline)glob-expand-word
C-x/ (readline)possible-filename-completions
C-x~ (readline)possible-username-completions
C-x$ (readline)possible-variable-completions
C-xA (readline)do-lowercase-version
C-xB (readline)do-lowercase-version
C-xC (readline)do-lowercase-version
C-xC-? (readline)backward-kill-line
C-xC-e (readline)edit-and-execute-command
C-xC-m (readline)shell-expand-line
C-xC-r (readline)re-read-init-file
C-xC-u (readline)undo
C-xC-v (readline)display-shell-version
C-xC-x (readline)exchange-point-and-mark
C-xD (readline)do-lowercase-version
C-xe (readline)call-last-kbd-macro
C-xE (readline)do-lowercase-version
C-xF (readline)do-lowercase-version
C-xG (readline)do-lowercase-version
C-xg (readline)glob-list-expansions
C-xH (readline)do-lowercase-version
C-xI (readline)do-lowercase-version
C-xJ (readline)do-lowercase-version
C-xK (readline)do-lowercase-version
C-xL (readline)do-lowercase-version
C-xM (readline)do-lowercase-version
C-xN (readline)do-lowercase-version
C-xO (readline)do-lowercase-version
C-xP (readline)do-lowercase-version
C-xQ (readline)do-lowercase-version
C-xR (readline)do-lowercase-version
C-xS (readline)do-lowercase-version
C-xs (readline)spell-correct-word
C-xT (readline)do-lowercase-version
C-xU (readline)do-lowercase-version
C-xV (readline)do-lowercase-version
C-xW (readline)do-lowercase-version
C-xX (readline)do-lowercase-version
C-xY (readline)do-lowercase-version
C-xZ (readline)do-lowercase-version
C-y (readline)yank
C-z (readline)vi-editing-mode
M-_ (readline)insert-last-argument
M-_ (readline)yank-last-arg
M-- (readline)digit-argument
M-! (readline)complete-command
M-? (readline)possible-completions
M-. (readline)insert-last-argument
M-. (readline)yank-last-arg
M-( (readline)redraw-current-line
M-[1;3C (readline)forward-word
M-[1;3D (readline)backward-word
M-[1;5C (readline)forward-word
M-[1;5D (readline)backward-word
M-[2~ (readline)overwrite-mode
M-[200~ (readline)bracketed-paste-begin
M-[3;5~ (readline)kill-word
M-[3~ (readline)delete-char
M-[5~ (readline)history-search-backward
M-[6~ (readline)history-search-forward
M-[A (readline)previous-history
M-[B (readline)next-history
M-[C (readline)forward-char
M-[D (readline)backward-char
M-[F (readline)end-of-line
M-[H (readline)beginning-of-line
M-{ (readline)complete-into-braces
M-@ (readline)complete-hostname
M-* (readline)insert-completions
M-/ (readline)complete-filename
M-\\ (readline)delete-horizontal-space
M-& (readline)tilde-expand
M-# (readline)insert-comment
M-^ (readline)history-expand-line
M-< (readline)beginning-of-history
M-= (readline)possible-completions
M-> (readline)end-of-history
M-~ (readline)complete-username
M-$ (readline)complete-variable
M-0 (readline)digit-argument
M-1 (readline)digit-argument
M-2 (readline)digit-argument
M-3 (readline)digit-argument
M-4 (readline)digit-argument
M-5 (readline)digit-argument
M-6 (readline)digit-argument
M-7 (readline)digit-argument
M-8 (readline)digit-argument
M-9 (readline)digit-argument
M-A (readline)do-lowercase-version
M-b (readline)backward-word
M-B (readline)do-lowercase-version
M-C (readline)do-lowercase-version
M-C-? (readline)backward-kill-word
M-C-] (readline)character-search-backward
M-C-b (readline)shell-backward-word
M-C-d (readline)shell-kill-word
M-C-e (readline)shell-expand-line
M-C-f (readline)shell-forward-word
M-C-g (readline)abort
M-C-h (readline)backward-kill-word
M-C-i (readline)dynamic-complete-history
M-C-l (readline)clear-display
M-C-r (readline)revert-line
M-C-t (readline)shell-transpose-words
M-C-y (readline)yank-nth-arg
M-D (readline)do-lowercase-version
M-d (readline)kill-word
M-E (readline)do-lowercase-version
M-F (readline)do-lowercase-version
M-f (readline)forward-word
M-G (readline)do-lowercase-version
M-g (readline)glob-complete-word
M-H (readline)do-lowercase-version
M-I (readline)do-lowercase-version
M-J (readline)do-lowercase-version
M-K (readline)do-lowercase-version
M-L (readline)do-lowercase-version
M-l (readline)downcase-word
M-M (readline)do-lowercase-version
M-M- (readline)complete
M-N (readline)do-lowercase-version
M-n (readline)non-incremental-forward-search-history
M-OA (readline)previous-history
M-OB (readline)next-history
M-OC (readline)forward-char
M-OD (readline)backward-char
M-OF (readline)end-of-line
M-OH (readline)beginning-of-line
M-P (readline)do-lowercase-version
M-p (readline)non-incremental-reverse-search-history
M-Q (readline)do-lowercase-version
M-R (readline)do-lowercase-version
M-r (readline)revert-line
M-S (readline)do-lowercase-version
M-Space (readline)set-mark
M-T (readline)do-lowercase-version
M-t (readline)transpose-words
M-U (readline)do-lowercase-version
M-u (readline)upcase-word
M-V (readline)do-lowercase-version
M-W (readline)do-lowercase-version
M-X (readline)do-lowercase-version
M-x (readline)execute-named-command
M-Y (readline)do-lowercase-version
M-y (readline)yank-pop
M-Z (readline)do-lowercase-version
Space (readline)magic-space
I add some extra convenience bindings:
F7 readline-insert datetime localdate
C-xC-d readline-insert datetime localdate
C-xC-f readline-complete fzf-file
C-xC-g readline-complete git-interesting-files
C-xC-k readline-complete words
C-xC-l readline-complete tmux-line
C-xC-p readline-complete tmux-word
C-xC-t readline-insert datetime localtime
Published on: 05 Aug 2026