我使用 Tab 补全比输入字母更多。我曾经打字rm ~/De<TAB>
,它会完成,rm ~/Desktop/
以便我可以继续下一个级别。
最近,这种行为改变了。完成现在 yield rm ~/Desktop<SPACE>
,这意味着如果我想继续,我必须退格并键入斜杠。这让我哭了。
更改似乎位于 中的函数_longopt()
中/etc/bash_completion
,但这是我所能遵循的。这种改变是有意的吗?如果是,它有什么好处?我可以恢复旧的行为吗,最好是通过配置选项,而不是仅仅从其他系统复制旧代码?
编辑:供参考的功能。
_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
}
Run Code Online (Sandbox Code Playgroud)
小智 9
在 Ubuntu 12.04 上安装 Adobe Reader 后,我遇到并解决了同样的问题。
我注释掉了这个_filedir
块/etc/bash_completion.d/acroread.sh
,它又正常工作了。
归档时间: |
|
查看次数: |
11110 次 |
最近记录: |