Câu trả lời:
điều này được kiểm soát bởi / etc / bash_completion
bạn có thể nhận xét mã mở rộng trong _Exand () nếu bạn không thích nó.
đây là phiên bản của tôi trong fedora 17, nhưng phiên bản của bạn cũng tương tự:
# 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() { :;}
trong ~/.bashrc
.
bash
có thể cung cấp tự động hoàn thành tinh vi hơn cho các lệnh nhất định (ví dụ: tự động hoàn thành các đối số chương trình khác với tên tệp). Có một chức năng Hoàn thành lập trình được xác định cho vim
lệnh trên hệ thống của bạn.
Nhập complete
vào dấu nhắc lệnh sẽ cho bạn thấy các chức năng được sử dụng để cung cấp tự động hoàn thành cho bash
.
$ complete
complete -o default -F _complete_open open
Nhập type function_name
để tìm hiểu về định nghĩa của họ.
$ type _complete_open
_complete_open is a function
_complete_open ()
{
# function definition
}
Để tìm ra nơi chức năng đã được xác định. sử dụng như sau:
$ shopt -s extdebug
$ declare -F _complete_open
_complete_open 70 /Users/danielbeck/.bash_profile