I use Debian Stretch for web development. Its default shell is bash. I use git for source versioning. I would like to have git branch names with case insensitive completion. At the moment, completion using TAB key is case sensitive. How can I achieve this?

Here is my /etc/inputrc. I edit it as root and reload it as regular user with bind -f /etc/inputrc

# /etc/inputrc - global inputrc for libreadline
# See readline(3readline) and `info rluserman' for more information.

# Be 8 bit clean.
set input-meta on
set output-meta on

# To allow the use of 8bit-characters like the german umlauts, uncomment
# the line below. However this makes the meta key not work as a meta key,
# which is annoying to those which don't need to type in 8-bit characters.

# set convert-meta off

# try to enable the application keypad when it is called.  Some systems
# need this to enable the arrow keys.
# set enable-keypad on

# see /usr/share/doc/bash/inputrc.arrows for other codes of arrow keys

# do not bell on tab-completion
# set bell-style none
# set bell-style visible

# some defaults / modifications for the emacs mode
$if mode=emacs

# allow the use of the Home/End keys
"\e[1~": beginning-of-line
"\e[4~": end-of-line

# allow the use of the Delete/Insert keys
"\e[3~": delete-char
"\e[2~": quoted-insert

# mappings for "page up" and "page down" to step to the beginning/end
# of the history
"\e[5~": beginning-of-history
"\e[6~": end-of-history

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

$if term=rxvt
"\e[7~": beginning-of-line
"\e[8~": end-of-line
"\eOc": forward-word
"\eOd": backward-word

# for non RH/Debian xterm, can't hurt for RH/Debian xterm
# "\eOH": beginning-of-line
# "\eOF": end-of-line

# for freebsd console
# "\e[H": beginning-of-line
# "\e[F": end-of-line


# go right to showing multiple options
# set show-all-if-ambiguous on
# TAB by itself cycles through options
# "\t": menu-complete

$if Bash
    # no shift needed; less typing = good
    set completion-ignore-case on
    # append a '/' to show a dir is a dir
    set mark-directories on
    set mark-symlinked-directories on
    # use ls -F style highlights for completion
    set visible-stats on
    # go right to showing multiple options
    # set show-all-if-ambiguous on
    # TAB by itself cycles through options
    # "\t": menu-complete
    # ESC-i cycles through options
    # "\e-i": menu-complete

# Two silly macros
# Insert double quotes & set cursor between them
"\C-x\"": "\"\"\C-b"
# Insert single quotes & set cursor between them
"\C-x'": "''\C-b"

What you are talking about is parameter completion, as opposed to command or file completion (and commands are files of course).

It looks like parameter completion in Bash does not respect the completion-ignore-case - only filename matching does. From man bash:

   completion-ignore-case (Off)
          If set to On, readline performs filename matching and completion in a case-insensitive fashion.

When I test it, commands that support parameter completion (like man itself) are case sensitive even though I have completion-ignore-case on.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.