我做了一些改變 TAB 自動完成工作方式的事情,但僅限於 more 指令。
其他每個指令都會列出可能的補全,但現在更多指令會列出一對單引號內的所有可能性。
所以在 /etc 中,如果我輸入
more pass<TAB>
結果是
$ more 'passwdqc.conf
passwd
passwd-'
打字
less pass<TAB>
結果是
$ less passwd
passwd passwd- passwdqc.conf
我怎麼重置它,以便more
自動完成的行為更像less
?
編輯:
$ 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
答案1
我可以重現:
_comp_foo() { compopt -o filenames -o nospace; COMPREPLY=("$(compgen -f -- "$2")"); }
complete -F _comp_foo foo
cd /etc
類型foo pass
,Tab。你應該看到這樣的東西:
foo 'passwd
passwd-'
:)
如何重置它,以便 more 的自動完成行為更像 less?
您可以重置 bashNAME
完成complete -r NAME
help complete
說:
-r - 刪除每個名稱的完成規範,或者,如果未提供名稱,則刪除所有完成規範
您可以重複使用現有的完成:
_completion_loader less 2>/dev/null # for bash-completion >= 1.9, bash >= 4.1
eval $(complete -p less | sed 's/ less$/ more/')