Wie kann ich die Bash-Dateinamenvervollständigung für „more“ zurücksetzen?

Wie kann ich die Bash-Dateinamenvervollständigung für „more“ zurücksetzen?

Ich habe etwas getan, das die Funktionsweise der TAB-Autovervollständigung geändert hat, aber nur für den Befehl „more“.

Jeder andere Befehl listet die möglichen Vervollständigungen auf, aber „more“ listet jetzt ALLE Möglichkeiten in einfachen Anführungszeichen auf.

Wenn ich also in /etc Folgendes eingebe,

more pass<TAB>

Das Ergebnis ist

$ more 'passwdqc.conf
passwd
passwd-' 

Tippen

less pass<TAB>

Ergebnisse in

$ less passwd
passwd         passwd-        passwdqc.conf  

Wie kann ich es zurücksetzen, damit moresich die Autovervollständigung eher wie verhält less?

Bearbeiten:

$ shopt -u
autocd          off
cdable_vars     off
cdspell         off
checkhash       off
checkjobs       off
compat31        off
compat32        off
compat40        off
compat41        off
direxpand       off
dirspell        off
dotglob         off
execfail        off
extdebug        off
failglob        off
globstar        off
gnu_errfmt      off
histreedit      off
histverify      off
hostcomplete    off
huponexit       off
lastpipe        off
lithist         off
login_shell     off
mailwarn        off
no_empty_cmd_completion off
nocaseglob      off
nocasematch     off
nullglob        off
restricted_shell    off
shift_verbose   off
xpg_echo        off
$ set -o
allexport       off
braceexpand     on
emacs           on
errexit         off
errtrace        off
functrace       off
hashall         on
histexpand      on
history         on
ignoreeof       off
interactive-comments    on
keyword         off
monitor         on
noclobber       off
noexec          off
noglob          off
nolog           off
notify          off
nounset         off
onecmd          off
physical        off
pipefail        off
posix           off
privileged      off
verbose         off
vi              off
xtrace          off

Antwort1

Ich kann es reproduzieren:

_comp_foo() { compopt -o filenames -o nospace; COMPREPLY=("$(compgen -f -- "$2")"); }
complete -F _comp_foo foo
cd /etc

Geben Sie foo pass, ein Tab. Sie sollten ungefähr Folgendes sehen:

foo 'passwd
passwd-'

:)

Wie kann ich es zurücksetzen, sodass sich die Autovervollständigung von „more“ eher wie „less“ verhält?

Sie können eine Bash-Vervollständigung zurücksetzen NAMEmitcomplete -r NAME

help completesagt:

-r - entfernt eine Vervollständigungsspezifikation für jeden NAMEN oder, wenn keine NAMEN angegeben sind, alle Vervollständigungsspezifikationen

Sie können eine vorhandene Vervollständigung wiederverwenden:

_completion_loader less 2>/dev/null # for bash-completion >= 1.9, bash >= 4.1
eval $(complete -p less | sed 's/ less$/ more/')

Siehe auch:So verwenden Sie die vorhandene Vervollständigung mit der aktuellen Bash-Vervollständigung erneut

verwandte Informationen