bash选项卡补全(带空格)

杰罗尼莫

当可能的选项可能包含空格时,bash补全出现问题。

假设我想要一个回显第一个参数的函数:

function test1() {
        echo $1
}

我生成了一个可能的完成选项列表(有些有空格,有些没有空格),但是我无法正确处理空格。

function pink() {
    # my real-world example generates a similar string using awk and other commands
    echo "nick\ mason syd-barrett david_gilmour roger\ waters richard\ wright"
}

function _test() {
    cur=${COMP_WORDS[COMP_CWORD]}
    use=`pink`
    COMPREPLY=( $( compgen -W "$use" -- $cur ) )
}
complete -o filenames -F _test test

当我尝试这个时,我得到:

$ test <tab><tab>
david_gilmour  nick           roger          waters
mason          richard        syd-barrett    wright
$ test r<tab><tab>
richard  roger    waters   wright

这显然不是我的意思。

如果我没有将数组分配给COMPREPLY,即仅分配给$( compgen -W "$use" -- $cur )则只有一个选项可以使它工作:

$ test n<tab>
$ test nick\ mason <cursor>

但是,如果还有几个选项,它们都将用单引号引起来:

$ test r<tab><tab>
$ test 'roger waters
richard wright' <cursor>

我的COMPREPLY变量一定有问题,但是我不知道是什么...

(在solaris上运行bash,以防发生变化……)

两性机器

如果您需要处理字符串中的数据,则可以使用Bash内置的字符串替换运算符。

function _test() {
    local iter use cur
    cur=${COMP_WORDS[COMP_CWORD]}
    use="nick\ mason syd-barrett david_gilmour roger\ waters richard\ wright"
    # swap out escaped spaces temporarily
    use="${use//\\ /___}"
    # split on all spaces
    for iter in $use; do
        # only reply with completions
        if [[ $iter =~ ^$cur ]]; then
            # swap back our escaped spaces
            COMPREPLY+=( "${iter//___/ }" )
        fi
    done
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

参数后的Bash选项卡补全

来自分类Dev

Bash选项卡补全删除文本

来自分类Dev

Bash选项卡补全在=字符后无法正常工作

来自分类Dev

选项卡自动补全命令的选项

来自分类Dev

自定义bash选项卡补全显示可能的补全,但未实际完成输入

来自分类Dev

zsh cd选项卡补全匹配

来自分类Dev

首个选项卡补全增强

来自分类Dev

使用PowerShell进行类似Bash的,不可旋转的文件名选项卡补全

来自分类Dev

bash选项卡补全在图形shell中不起作用

来自分类Dev

Bash选项卡补全在以前没有时将“〜”扩展为“ / home / ___”

来自分类Dev

Bash选项卡补全:'-bash:寻找匹配`)时出现意外的EOF -bash:语法错误:文件意外结束

来自分类Dev

Editline选项卡补全应该起作用吗?

来自分类Dev

git分支的选项卡补全显示旧/过时的条目

来自分类Dev

Editline选项卡补全应该起作用吗?

来自分类Dev

带CodeMirror的引导选项卡

来自分类Dev

带边框的选项卡菜单

来自分类Dev

用空格替换选项卡

来自分类Dev

/ proc / self / fd /的选项卡补全显示与列出内容相比不同的补全

来自分类Dev

GitKraken,签出空格作为选项卡,推送选项卡作为空格

来自分类Dev

软选项卡显示为硬选项卡,空格转换为硬选项卡

来自分类Dev

软选项卡显示为硬选项卡,空格转换为硬选项卡

来自分类Dev

带角的选项卡:仅在通过$ http单击时加载选项卡内容

来自分类Dev

禁用bash选项卡完成

来自分类Dev

刷新bash选项卡完成

来自分类Dev

Bash参数扩展以删除选项卡

来自分类Dev

引导程序选项卡:选项卡之间的空格未知

来自分类Dev

用每个选项卡固定的空格数替换缩进选项卡

来自分类Dev

带图标的Android Pager滑动选项卡

来自分类Dev

带选项卡控件的页面控制器

Related 相关文章

  1. 1

    参数后的Bash选项卡补全

  2. 2

    Bash选项卡补全删除文本

  3. 3

    Bash选项卡补全在=字符后无法正常工作

  4. 4

    选项卡自动补全命令的选项

  5. 5

    自定义bash选项卡补全显示可能的补全,但未实际完成输入

  6. 6

    zsh cd选项卡补全匹配

  7. 7

    首个选项卡补全增强

  8. 8

    使用PowerShell进行类似Bash的,不可旋转的文件名选项卡补全

  9. 9

    bash选项卡补全在图形shell中不起作用

  10. 10

    Bash选项卡补全在以前没有时将“〜”扩展为“ / home / ___”

  11. 11

    Bash选项卡补全:'-bash:寻找匹配`)时出现意外的EOF -bash:语法错误:文件意外结束

  12. 12

    Editline选项卡补全应该起作用吗?

  13. 13

    git分支的选项卡补全显示旧/过时的条目

  14. 14

    Editline选项卡补全应该起作用吗?

  15. 15

    带CodeMirror的引导选项卡

  16. 16

    带边框的选项卡菜单

  17. 17

    用空格替换选项卡

  18. 18

    / proc / self / fd /的选项卡补全显示与列出内容相比不同的补全

  19. 19

    GitKraken,签出空格作为选项卡,推送选项卡作为空格

  20. 20

    软选项卡显示为硬选项卡,空格转换为硬选项卡

  21. 21

    软选项卡显示为硬选项卡,空格转换为硬选项卡

  22. 22

    带角的选项卡:仅在通过$ http单击时加载选项卡内容

  23. 23

    禁用bash选项卡完成

  24. 24

    刷新bash选项卡完成

  25. 25

    Bash参数扩展以删除选项卡

  26. 26

    引导程序选项卡:选项卡之间的空格未知

  27. 27

    用每个选项卡固定的空格数替换缩进选项卡

  28. 28

    带图标的Android Pager滑动选项卡

  29. 29

    带选项卡控件的页面控制器

热门标签

归档