Antworten:
Dies wird durch / etc / bash_completion gesteuert
Sie können den Erweiterungscode in _expand () auskommentieren, wenn Sie ihn nicht mögen.
Hier ist meine Version in Fedora 17, aber deine sollte ähnlich sein:
# This function expands tildes in pathnames
#
_expand()
{
# FIXME: Why was this here?
#[ "$cur" != "${cur%\\}" ] && cur="$cur\\"
# Expand ~username type directory specifications. We want to expand
# ~foo/... to /home/foo/... to avoid problems when $cur starting with
# a tilde is fed to commands and ending up quoted instead of expanded.
if [[ "$cur" == \~*/* ]]; then
eval cur=$cur
elif [[ "$cur" == \~* ]]; then
cur=${cur#\~}
COMPREPLY=( $( compgen -P '~' -u "$cur" ) )
[ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]}
return ${#COMPREPLY[@]}
fi
}
function _expand() { :;}
in meinem definiert habe ~/.bashrc
.
bash
kann für bestimmte Befehle eine komplexere automatische Vervollständigung bereitstellen (z. B. andere Argumente für das automatische Vervollständigen von Programmen als Dateinamen). Für den Befehl auf Ihrem System ist eine solche programmierbare Vervollständigungsfunktion definiert vim
.
Wenn Sie complete
an der Eingabeaufforderung eingeben, wird angezeigt, für welche Funktionen die automatische Vervollständigung bereitgestellt wird bash
.
$ complete
complete -o default -F _complete_open open
Geben Sie ein type function_name
, um mehr über ihre Definition zu erfahren.
$ type _complete_open
_complete_open is a function
_complete_open ()
{
# function definition
}
Um herauszufinden, wo die Funktion definiert wurde. Verwenden Sie Folgendes:
$ shopt -s extdebug
$ declare -F _complete_open
_complete_open 70 /Users/danielbeck/.bash_profile