Uso il completamento con tabulazione più che scrivere lettere. Digitavo rm ~/De<TAB>
e sarebbe stato completato in rm ~/Desktop/
modo da poter continuare al livello successivo.
Recentemente, quel comportamento è cambiato. Il completamento ora produce rm ~/Desktop<SPACE>
, il che significa che devo backspace e digitare la barra se voglio continuare. Questo mi fa piangere.
I cambiamenti sembrano essere situato nella funzione _longopt()
di /etc/bash_completion
, tuttavia, che è, per quanto posso seguire. Questo cambiamento è intenzionale e, in tal caso, a cosa serve? Posso riavere il vecchio comportamento, preferibilmente con un'opzione di configurazione invece di copiare il vecchio codice da qualche altro sistema?
Modifica: la funzione di riferimento.
_longopt()
{
local cur prev split=false
_get_comp_words_by_ref -n = cur prev
_split_longopt && split=true
case "$prev" in
--*[Dd][Ii][Rr]*)
_filedir -d
return 0
;;
--*[Ff][Ii][Ll][Ee]*|--*[Pp][Aa][Tt][Hh]*)
_filedir
return 0
;;
esac
$split && return 0
if [[ "$cur" == -* ]]; then
COMPREPLY=( $( compgen -W "$( $1 --help 2>&1 | \
sed -ne 's/.*\(--[-A-Za-z0-9]\{1,\}\).*/\1/p' | sort -u )" \
-- "$cur" ) )
elif [[ "$1" == @(mk|rm)dir ]]; then
_filedir -d
else
_filedir
fi
}
_longopt()
funzione?
readline
impostazioni (hai un ~/inputrc
file?) E dal fatto che l'elemento è una directory reale o un link simbolico a una directory.
.inputrc
su questo sistema. (Erano i giorni, riparavano backspace e i tasti cursore ...) E succede per tutti gli elementi, directory o file, link simbolici o meno.
rmdir
, non permkdir
otouch
.