mostly profanity and fixes
[distro-setup] / .inputrc
1 # case insensitive completion
2 set completion-ignore-case on
3 # - to _ insensitive completion
4 set completion-map-case on
5
6 # todo: explain this :)
7 set menu-complete-display-prefix on
8
9 # for readline-complete.el
10 set bell-style none
11 set completion-display-width 0
12
13 # preserve cusror location in history items.
14 # unfortunately, this does not work when using vi-mode and j or k
15 # I would like to make a patch to fix this.
16 set history-preserve-point on
17
18
19 # show all completions all the time
20 set show-all-if-ambiguous on
21 # this does a partial complete if it can before showing completions
22 set show-all-if-unmodified on
23
24
25 # nice in bash, but messes up completion in emacs shell
26 #set visible-stats on
27 set visible-stats off
28
29 # turn off pager for completion
30 set page-completions off
31
32 # to answer this question in bash-completion README:
33 # Q. When completing on a symlink to a directory, bash does not append
34 # the trailing / and I have to hit <Tab> again. I don't like this.
35 set mark-symlinked-directories on
36
37 # i had this set in the past to make c-u work, but it doesn't seem to be needed now.
38 # not sure if it affected any other keybinds.
39 #set bind-tty-special-chars off
40
41
42
43 # key bindings:
44
45 # note c-i/m/h/w are unusable, duplicating tab, enter, ctrl-del or something, backspace
46 # C-x would be hard to rebind because emacs.
47
48 "\C-q": exchange-point-and-mark
49 # default not bound
50
51 "\C-e": kill-region
52 # default M-S-3
53 "\C-a": insert-comment
54
55 # default is C-M-y
56 "\e,": yank-nth-arg
57
58 "\C-f": menu-complete
59 # might be nice to bind this to tomsething, but not sure what: menu-complete-backward
60 "\C-b": copy-region-as-kill
61
62 # arrow keys. for other terminals, see http://unix.stackexchange.com/questions/10806/how-to-change-previous-next-word-shortcut-in-bash
63 # this can be conditioned based on the term, see the term keyword in
64 # bash's readline manual section
65 #"\eOc": forward-word
66 #"\eOd": backward-word
67 "\e[1;5C": forward-word
68 "\e[1;5D": backward-word
69
70 Control-Space: set-mark
71
72 # default is C-M-e which kinda sucks
73 "\C-t": shell-expand-line
74
75 # ctrl-delete
76 "\e[3;5~": kill-word
77
78 # default is C-x C-e
79 "\C-g": edit-and-execute-command
80
81 # default is C-y
82 "\C-v": yank
83
84 # default is C-M-y
85 "\C-\M-v": yank-pop
86
87 # by default, not bound
88 "\C-p": dabbrev-expand # similar menu-complete, except for commands in history
89
90 # default is C-q. this matches emacs.
91 "\C-\M-q": quoted-insert
92
93 # default is C-x C-u
94 "\C-d": undo
95
96
97
98
99
100 ####### commented out stuff ###########
101
102 # vi mode settings and observatoins
103 # double pound indicates it is only commented because I am not using vi mode
104 ##set editing-mode vi
105
106 # completion from history. how cool
107 ##Control-SPACE: dynamic-complete-history
108
109 # this is just kinda cool to show off:
110 ##"\M-{": complete-into-braces
111
112
113 # by default / and ? do a non-incremental search. This changes that.
114 # the downside is that you have to type ctrl-v then / to get the actual char.
115 ##set keymap vi-command
116 ##"/": reverse-search-history
117 ##"?": forward-search-history
118 # make g go to the end of history. emacs has some meta key for this,
119 # but we are not using g, so why not.
120 ##"g": end-of-history
121 # yank-pop from emacs mode, hacked into vim-mode.
122 ##"o": vi-yank-pop
123 # vim uses m<letter> to set a mark and `<letter> to return to a mark specified
124 # by letter. On a single line, this doesn't make much sense. So I'm using the
125 # emacs way of a single mark. In vi-mode, you can do dm<letter> to delete a
126 # mark. Emacs has its own delete and copy region commands. I'd like to hack the
127 # source code to make d` delete to the mark and y` yank to the mark. I'm
128 # leaving it for now, we will see how this works out in actual emacs when I get
129 # my vi keybinds setup there.
130 ##"`": exchange-point-and-mark
131 ##"v": set-mark
132 ##"m": kill-region
133 ##"-": yank-last-arg
134 ##"_": yank-nth-arg
135
136
137
138 # w and b are normally always tripping over punctuation as word separators, I
139 # think having W and B act like that is a bit more efficient default. And this
140 # "shell" functions see words as the shell does, which is cool.
141 # These are also only included as bash commands.
142 # this is enables in .bashrc, after testing if bash version is > 4
143 # "b": shell-backward-word
144 # "w": shell-forward-word
145 # here we are with the unwrapped word, back and end functions, (that should get fixed).
146 #"w": vi-fWord
147 #"W": vi-fword
148 #b: vi-bWord
149 #B: vi-bword
150 #"e": vi-eWord
151 #"E": vi-eword
152 #
153 #unfortunately thre is another bug: binding for example W to vi-fword makes it
154 #show that its bound to that and also vi-fWord, and the upper case one is what
155 # word.now
156 #happens
157 #
158 # I added a hack to the readline sources to reverse the upper/lowercase check on these
159
160 # I would like to make a patch to make the command 'shell-end-word'
161
162
163
164 # for some reason, binding the '=' key doesn't work.
165
166 # for some reason, the documentation of the same commands seems to be more
167 # extensive in bash. There are extra commands listed in the bash documentation
168 # too, but so far they seem to be shell specific.
169
170 # "p": yank
171 #set keymap vi-insert
172 #
173 #notes:
174 #
175 #normal mode has this, which doesn't make sense. 'i' still works fine. whatever.
176 # vi-insertion-mode (not bound)
177 #
178 # normal mode default keybinds also have this:
179 # vi-fword (not bound)
180 # vi-fWord (not bound)
181 #
182 # vi-bword (not bound)
183 # vi-bWord (not bound)
184 #
185 # Looking in the readline sources, those are the real forward and back
186 # commands, but they are wrapped in this: and its corresponding back version.
187 # "W": vi-next-word
188 # "w": vi-next-word
189 # What this wrapper does is check for upper/lower case, do terminal ding if its
190 # at the eol, and handle negative counts prefixed to it.
191 #
192 # This command:
193 # "_": vi-yank-arg
194 # works like this emacs command:
195 # yank-last-arg
196 # except it puts you in insert mode afterwards, so you can't make successive
197 # calls to go to earlier last arguments.
198 #
199 # Emacs has a kill ring. yank means paste. yank-pop means go down the kill
200 # ring, this only has an effect after a yank, or a yank-pop that was after a
201 # yank. Vim also has a kill ring plugin, that has a yank-pop, and a yank-push,
202 # to browse forward in the kill ring. In emacs there is no forward function,
203 # you simply undo the yank. In bash vi-mode, undoing the yank undoes it
204 # entirely, not each item in the kill ring. This isn't a big deal. In both
205 # emacs and vi-mode, the kill ring stays in the new position regardless of the
206 # undo. Vi-mode does not allow you to yank-pop after the vi pastes 'p' and 'P',
207 # 1 problem is the cursor is in a little different position than an emacs yank.
208 # I think I can modify the readline sources fairly easily to make this
209 # possible.
210 # There is an interesting incompatibility between vi and emacs mode. Emacs mode
211 # always has the block be 1 square after the cursor. Same in vi-insert, but in
212 # vi-normal, its on top of the character and can't go beyond the last
213 # character, so if you do a yank at the last character in vi-normal, it does
214 # not put the cursor after the last character like a normal yank because it
215 # cant, and then you can't yank-pop because the cursor is in the wrong spot.
216 #
217 #
218
219 # make ctrl-backspace work, see
220 # https://unix.stackexchange.com/questions/264791/ctrl-backspace-and-ctrl-delete-in-bash
221 "\C-h": unix-word-rubout