Bash tab 补全删除文本

Bash tab 补全删除文本

我有一个 debian 系统,在该系统上,我的 bash 选项卡完成有一个奇怪的行为。当我编写类似命令scp file.tgz remoteServer:/home/remoteU并点击选项卡时,它将完成scp file.tgz /home/remoteUser杀死主机引用。对于ssh引用这样的远程目录的任何与命令相关的命令,这种情况都会发生在我身上。

我已经检查了我的 bash 完成配置,但找不到与删除冒号之前的测试相关的任何内容,因为我怀疑这是导致该行为的字符。同样有趣的是,远程系统将首先被查询以获取正确的目录。

有什么建议么?

答案1

将此行添加到您的.bashrc文件中以从COMP_WORDBREAKS.

COMP_WORDBREAKS=${COMP_WORDBREAKS//:}

这是根据源代码中的这个函数进行的修剪:

__ltrim_colon_completions()
{
    if [[ "$1" == *:* && "$COMP_WORDBREAKS" == *:* ]]; then
        # Remove colon-word prefix from COMPREPLY items
        local colon_word=${1%"${1##*:}"}
        local i=${#COMPREPLY[*]}
        while [[ $((--i)) -ge 0 ]]; do
            COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"}
        done
    fi
}

相关内容