blob: a88ed4cbb47a785976bb796e60978ae3b99319dc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# ------------------------------------------------------------------------------
# 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
|