Respuestas:
esto está controlado por / etc / bash_completion
puede comentar el código de expansión en _expand () si no le gusta.
Aquí está mi versión en Fedora 17, pero la suya debería ser similar:
# 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() { :;}
en mi ~/.bashrc
.
bash
puede proporcionar un autocompletado más sofisticado para ciertos comandos (por ejemplo, autocompletar argumentos del programa que no sean nombres de archivo). Existe una función de finalización programable definida para el vim
comando en su sistema.
Escribir complete
en el símbolo del sistema le mostrará qué funciones se utilizan para proporcionar el autocompletado bash
.
$ complete
complete -o default -F _complete_open open
Escriba type function_name
para conocer su definición.
$ type _complete_open
_complete_open is a function
_complete_open ()
{
# function definition
}
Para averiguar dónde se definió la función. usa lo siguiente:
$ shopt -s extdebug
$ declare -F _complete_open
_complete_open 70 /Users/danielbeck/.bash_profile