Remap shift-tab to tab in bash/screen/putty in Linux?

3

Well I use vi-mode in bash via the set -o vi command. What's annoying is when I'm typing words in capital then try to complete using tab but don't release the shift-key fast enough, it brings me out of insert mode and into command mode. I thought after a few months that I would naturally adjust and stop doing this but it seems I can't..

Now, if there is a way to remap shift-tab (which I doubt means anything useful in any context) to just a regular tab, then my command line troubles will be over.

My setup is Windows -> Putty -> bash -> gnu screen

chriskirk

Posted 2012-03-07T16:33:40.920

Reputation: 263

Answers

3

I was having the same problem on a Solaris machine.

I fixed it by adding the following line to my .inputrc file.

"\e[Z": complete

In fact, here's my entire .inputrc (note: you'll want to change mode from emacs to vi) file which I copied from somewhere on the web:

# This file controls the behaviour of line input editing for
     # programs that use the GNU Readline library.  Existing
     # programs include FTP, Bash, and GDB.
     #
     # You can re-read the inputrc file with C-x C-r.
     # Lines beginning with '#' are comments.
     #
     # First, include any systemwide bindings and variable
     # assignments from /etc/Inputrc
     $include /etc/Inputrc
      
     #
     # Set various bindings for emacs mode.
      
     set editing-mode emacs
      
     $if mode=emacs
      
     Meta-Control-h:    backward-kill-word      Text after the function name is ignored
      
     #
     # Arrow keys in keypad mode
     #
     #"\M-OD":        backward-char
     #"\M-OC":        forward-char
     #"\M-OA":        previous-history
     #"\M-OB":        next-history
     #
     # Arrow keys in ANSI mode
     #
     "\M-[D":        backward-char
     "\M-[C":        forward-char
     "\M-[A":        previous-history
     "\M-[B":        next-history
     #
     # Arrow keys in 8 bit keypad mode
     #
     #"\M-\C-OD":       backward-char
     #"\M-\C-OC":       forward-char
     #"\M-\C-OA":       previous-history
     #"\M-\C-OB":       next-history
     #
     # Arrow keys in 8 bit ANSI mode
     #
     #"\M-\C-[D":       backward-char
     #"\M-\C-[C":       forward-char
     #"\M-\C-[A":       previous-history
     #"\M-\C-[B":       next-history
      
     C-q: quoted-insert
      
     $endif
      
     # An old-style binding.  This happens to be the default.
     TAB: complete
      
     # Macros that are convenient for shell interaction
     $if Bash
     # edit the path
     "\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
     # prepare to type a quoted word --
     # insert open and close double quotes
     # and move to just after the open quote
     "\C-x\"": "\"\"\C-b"
     # insert a backslash (testing backslash escapes
     # in sequences and macros)
     "\C-x\\": "\\"
     # Quote the current or previous word
     "\C-xq": "\eb\"\ef\""
     # Add a binding to refresh the line, which is unbound
     "\C-xr": redraw-current-line
     # Edit variable on current line.
     "\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
     $endif
      
     # use a visible bell if one is available
     set bell-style visible
      
     # don't strip characters to 7 bits when reading
     set input-meta on
      
     # allow iso-latin1 characters to be inserted rather
     # than converted to prefix-meta sequences
     set convert-meta off
      
     # display characters with the eighth bit set directly
     # rather than as meta-prefixed characters
     set output-meta on
      
     # if there are more than 150 possible completions for
     # a word, ask the user if he wants to see all of them
     set completion-query-items 150
      
     # For FTP
     $if Ftp
     "\C-xg": "get \M-?"
     "\C-xt": "put \M-?"
     "\M-.": yank-last-arg
     $endif

     # Make Shift-tab act like regular tab - ms4719 - 20120308
     "\e[Z": complete

Mike

Posted 2012-03-07T16:33:40.920

Reputation: 31