Hice algo que cambió la forma en que funciona la función de autocompletar TAB, pero solo para el comando más.
Todos los demás comandos enumeran las posibles terminaciones, pero ahora más enumera TODAS las posibilidades dentro de un par de comillas simples.
Entonces en /etc, si escribo
more pass<TAB>
El resultado es
$ more 'passwdqc.conf
passwd
passwd-'
Mecanografía
less pass<TAB>
Resultados en
$ less passwd
passwd passwd- passwdqc.conf
¿Cómo puedo restablecerlo para que more
el autocompletado se comporte mejor less
?
Editar:
$ 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
Respuesta1
Puedo reproducir:
_comp_foo() { compopt -o filenames -o nospace; COMPREPLY=("$(compgen -f -- "$2")"); }
complete -F _comp_foo foo
cd /etc
Tipo foo pass
, Tab. Debería ver algo como esto:
foo 'passwd
passwd-'
:)
¿Cómo puedo restablecerlo para que el autocompletado de más se comporte más como menos?
Puedes restablecer la finalización de un bash NAME
concomplete -r NAME
help complete
dice:
-r: elimina una especificación de finalización para cada NOMBRE o, si no se proporcionan NOMBRES, todas las especificaciones de finalización
Puede reutilizar una terminación existente:
_completion_loader less 2>/dev/null # for bash-completion >= 1.9, bash >= 4.1
eval $(complete -p less | sed 's/ less$/ more/')
Ver también:cómo reutilizar la finalización existente con la finalización de bash reciente