Ich habe die schlechte Angewohnheit, TABbeim Verwenden des Terminals zu oft zu drücken. Wenn die aufgerufene Bash-Vervollständigungsroutine besonders langsam ist, führt dies zu einer langen Wartezeit, während mir das Terminal die Vervollständigungsliste 2-3 Mal anzeigt (oder wie oft auch immer TABgedrückt wurde).
Gibt es eine Möglichkeit, die Bash-Vervollständigung so zu gestalten, dass die wiederholten Tastendrücke einfach ignoriert werden?
Antwort1
Die Handbuchseite definiert eine große Anzahl von „Variablen“, die in Ihrer Datei ~/.inputrc definiert werden können, um die unterstützten Vervollständigungsschlüssel zu optimieren.
Durch die strategische Zuordnung derrichtiger Schlüsselmit der richtigen Funktion erzielen Sie wahrscheinlich den gewünschten Effekt. Sie können jedoch nicht wirklich verhindern, TABdass ein Double die Arbeit zweimal erledigt.
Beispieldatei ~/.inputrc:
C-TAB: complete
TAB: complete-filename
Der betroffene Bereich lautet auf der Manualpage wie folgt:
Completing
complete (TAB)
Attempt to perform completion on the text before point. Bash attempts
completion treating the text as a variable (if the text begins with $),
username (if the text begins with ~), hostname (if the text begins with @),
or command (including aliases and functions) in turn. If none of
these produces a match, filename completion is attempted.
possible-completions (M-?)
List the possible completions of the text before point.
insert-completions (M-*)
Insert all completions of the text before point that would have been
generated by possible-completions.
menu-complete
Similar to complete, but replaces the word to be completed with a
single match from the list of possible completions. Repeated execution of
menu-complete steps through the list of possible completions, inserting
each match in turn. At the end of the list of completions, the bell is
rung (subject to the setting of bell-style) and the original text
is restored. An argument of n moves n positions forward in the list of
matches; a negative argument may be used to move backward through the list.
This command is intended to be bound to TAB, but is unbound by
default.
menu-complete-backward
Identical to menu-complete, but moves backward through the list of possible
completions, as if menu-complete had been given a negative argument.
This command is unbound by default.
delete-char-or-list
Deletes the character under the cursor if not at the beginning or end of
the line (like delete-char). If at the end of the line, behaves identi‐
cally to possible-completions. This command is unbound by default.
complete-filename (M-/)
Attempt filename completion on the text before point.
possible-filename-completions (C-x /)
List the possible completions of the text before point, treating it as
a filename.
complete-username (M-~)
Attempt completion on the text before point, treating it as a username.
possible-username-completions (C-x ~)
List the possible completions of the text before point, treating it as
a username.
complete-variable (M-$)
Attempt completion on the text before point, treating it as a shell variable.
possible-variable-completions (C-x $)
List the possible completions of the text before point, treating it as
a shell variable.
complete-hostname (M-@)
Attempt completion on the text before point, treating it as a hostname.
possible-hostname-completions (C-x @)
List the possible completions of the text before point, treating it as
a hostname.
complete-command (M-!)
Attempt completion on the text before point, treating it as a
command name. Command completion attempts to match the text against aliases,
reserved words, shell functions, shell builtins, and finally executable
filenames, in that order.
possible-command-completions (C-x !)
List the possible completions of the text before point, treating it as
a command name.
dynamic-complete-history (M-TAB)
Attempt completion on the text before point, comparing the text against
lines from the history list for possible completion matches.
dabbrev-expand
Attempt menu completion on the text before point, comparing the text
against lines from the history list for possible completion matches.
complete-into-braces (M-{)
Perform filename completion and insert the list of possible completions
enclosed within braces so the list is available to the shell (see Brace
Expansion above).