Если я наберу, cat ~/.bashr<TAB>
то это завершает cat ~/.bashrc
.
Если я наберу, vim ~/.bashr<TAB>
то это завершится vim /home/neil/.bashrc
...
(Это то же самое vi
, что и псевдоним "vim"
.)
Могу ли я выключить это?
Если я наберу, cat ~/.bashr<TAB>
то это завершает cat ~/.bashrc
.
Если я наберу, vim ~/.bashr<TAB>
то это завершится vim /home/neil/.bashrc
...
(Это то же самое vi
, что и псевдоним "vim"
.)
Могу ли я выключить это?
это контролируется / etc / bash_completion
Вы можете закомментировать код расширения в _expand (), если он вам не нравится.
Вот моя версия в Fedora 17, но ваша должна быть похожа:
# 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() { :;}
в моем~/.bashrc
.bash
может обеспечить более сложное автозаполнение для определенных команд (например, автозаполнение аргументов программы, кроме имен файлов). Существует такая функция программируемого завершения, определенная дляvim
команды в вашей системе.Ввод
complete
в командной строке покажет вам, какие функции используются для автозаполненияbash
.Типа,
type function_name
чтобы узнать об их определении.Чтобы узнать, где была определена функция. используйте следующее:
источник