# ------------------------------------------------------------------------------ # Readline configuration file # ------------------------------------------------------------------------------ # # https://www.gnu.org/software/bash/manual/bash.html#Readline-Init-File # # Executed by Readline when a program starts the Readline library # # Options that take a string parameter cannot have a comment next to them, e.g. # `set bell-style none # Some comment` will not work. # ------------------------------------------------------------------------------ # Variable settings # ------------------------------------------------------------------------------ # Completion configuration # # It's worth noting what's going on here since it's not clear from the # documentation. # # There are three cases to cover for the behavior I want: # - Only one match → complete # - Multiple matches → show the list # - Multiple matches with common prefix → complete prefix and show the list # # By default, `menu-complete()` will select the first completion, this covers # the first case. `show-all-if-ambiguous` covers the second case by showing the # list when there are multiple choices. `menu-complete-display-prefix` covers # the third case by completing the common prefix. set show-all-if-ambiguous on set menu-complete-display-prefix on set editing-mode vi # Vi keybindings set match-hidden-files off # Don't match hidden files, unless a leading '.' is typed explicitly set completion-ignore-case on # Ignore case when matching completions set search-ignore-case on # Ignore case when searching set skip-completed-text on # Don't insert match when completing in the middle of a word set completion-query-items 100 # Prompt before showing more than this number of completions set completion-display-width -1 # Use all available width to show completions set print-completions-horizontally on # Sort completions horizontally set colored-stats on # Show completions using colors depending on file type set visible-stats on # Append a character denoting file type set colored-completion-prefix on # Color the common prefix of completions set expand-tilde off # Don't expand tilde automatically set show-mode-in-prompt on # Show current mode (vi-insert, vi-command) in prompt # String to display for each mode set vi-cmd-mode-string -CMD- set vi-ins-mode-string -INS- # Don't ring the terminal bell set bell-style none # ------------------------------------------------------------------------------ # Key bindings # ------------------------------------------------------------------------------ # # To unbind: bind to `""` # # https://www.gnu.org/software/bash/manual/bash.html#Bindable-Readline-Commands-1 $if mode=vi # vi-insert ____________________________________________________________________ set keymap vi-insert $include ~/.config/bash/vi.inputrc "\C-i": menu-complete # Tab cycle completions forward "\e[Z": menu-complete-backward # Shift+Tab cycle completions backward "\C-a": insert-completions # Ctrl+a insert all completions "\eE": shell-expand-line # Alt+E shell expansion "\e/": complete-filename # Alt+/ filename expansion "\e~": complete-username # Alt+~ username expansion "\e$": complete-variable # Alt+$ variable expansion "\e@": complete-hostname # Alt+@ hostname expansion "\e!": complete-command # Alt+! command expansion "\e\t": dynamic-complete-history # Alt+Tab history entry (not lines!) expansion "\eh": backward-char # Alt+h one char backward "\el": forward-char # Alt+l one char forward "\C-b": beginning-of-line # Ctrl+b beginning of line "\C-e": end-of-line # Ctrl+e end of line "\ee": "ranger\r" # Alt+e open `ranger` # vi-command ___________________________________________________________________ set keymap vi-command $include ~/.config/bash/vi.inputrc "u": vi-undo # u undo $endif