Czy zmienić mapowanie shift-tab na tab w bash / screen / putty w Linux?

2

Używam trybu vi w bashu za pomocą komendy set -o vi. Irytujące jest to, że kiedy wpisuję słowa wielkimi literami, a następnie staram się uzupełnić klawiszem tab, ale nie zwalniam wystarczająco klawisza Shift, to wychodzi mi z trybu wstawiania i przechodzi w tryb poleceń. Po kilku miesiącach pomyślałem, że naturalnie się dostosuję i przestanę to robić, ale wygląda na to, że nie mogę ...

Teraz, jeśli istnieje sposób na zmianę mapowania klawisza shift (co wątpię znaczy coś przydatnego w dowolnym kontekście) na zwykłą kartę, wtedy problemy z linią poleceń zostaną zakończone.

Moja konfiguracja to Windows -> Putty -> bash -> ekran GNU

chriskirk
źródło

Odpowiedzi:

2

Miałem ten sam problem na komputerze Solaris.

Naprawiłem to, dodając następujący wiersz do mojego pliku .inputrc.

"\e[Z": complete

W rzeczywistości oto mój cały plik .inputrc (uwaga: będziesz chciał zmienić tryb z emacsa na vi) plik, który skopiowałem gdzieś w sieci:

# 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
Mikrofon
źródło