小编tic*_*chy的帖子

自定义目录完成附加空格

我有以下目录结构:

/home/tichy/xxx/yyy/aaa
/home/tichy/xxx/yyy/aab
/home/tichy/xxx/yyy/aac
Run Code Online (Sandbox Code Playgroud)

我想输入cdw y <TAB>并得到cdw yyy/<CURSOR>,所以我可以添加cdw yyy/a <TAB>并获得cdw yyy/aa <CURSOR>

我想出的解决方案给了我以下内容:
cdw y <TAB> => cdw yyy <SPACE> <CURSOR>

以下代码我到目前为止:

_cdw () {
    local cur prev dirs
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    COMPREPLY=($(compgen -d -- /home/tichy/xxx/${cur}|perl -pe 's{^/home/tichy/xxx/}{}'))
    # no difference, a bit more logical:
    dirs=$(compgen -o nospace -d /home/tichy/xxx/${cur}|perl -pe 's/{^/home/tichy/xxx/}{}')
    COMPREPLY=($(compgen -d -W ${dir} ${cur}|perl -pe 's{^/home/tichy/xxx/}{}'))
    return 0
}
complete -F _cdw cdw
cdw () {
    cd /home/tichy/xxx/$@
}
Run Code Online (Sandbox Code Playgroud)

有什么想法有什么不对吗?在我看来,完成过程似乎已经完成,并没有期待任何更多的输入.

directory bash bash-completion

5
推荐指数
3
解决办法
1683
查看次数

标签 统计

bash ×1

bash-completion ×1

directory ×1