Bash命令行选项卡完成冒号字符

udslk

当参数中不包含特殊字符时,我已经使用compgen机制为自定义命令成功实现了bash补全:

    current=${COMP_WORDS[COMP_CWORD]}
    all=$(_get_all_items)
    COMPREPLY=( $(compgen -W "$all" -- $current) )
    ...
    complete -F _prog_compl prog

我用同样的方法来与冒号开始完成项目::first:second...,但是它不能告诉我/自动完成它们。我尝试用反斜杠转义冒号,但也不起作用。我应该如何完全摆脱结肠?

该项目开始于结肠,让我们说::first:second如果我写progname并以这样的冒号开头:

$ progname :<Tab here after colon>

我看不到任何补全,只有两个冒号(“ ::”)-其中一个自动添加到我键入的行中。如果将冒号转换为普通字符(假设为'b'),则完全按照我的意愿完成:bfirstbsecond...

需要注意的是,当我按Tab时,它会在我之前插入的冒号旁边放置另一个“:”,并且它变成“ ::”。

$ bash --version
GNU bash, version 4.1.10(2)-release (i486-slackware-linux-gnu)
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

另外,我在外壳中做了一些实验,得出:

$ compgen -W ":aaaa5 :gb2 :cd3" -- ":"
:aaaa5
:gb2
:cd3

然而,奇怪的是,在命令行上键入:之后,在我的唯一“:”后面加上了另一个“:”并使其变成了“ ::”。

$ complete
complete -F _alp_compl alp.sh
complete -o nospace -F __dbus_send dbus-send
complete -F _myprog_compl myprog
complete -o nospace -F __gdbus gdbus
complete -o nospace -F __gsettings gsettings
udslk

在咨询[email protected]之后,我得到了一个答案:

冒号会中断补全系统的单词(请查看COMP_WORDBREAKS shell变量的描述),因此在键入时

程序名:[TAB]

完成系统会空一个单词来完成。如果所有可能的补全都以“:”作为最长的公共前缀,则补全系统会将冒号插入行中。

而且我的COMP_WORDBREAKS搜索从stackoverflow中得到了答案

现在,debian bash完成页面修复了(我丢失的)/ etc / bash_completion文件之后,我由冒号启动的完成工作正在按我的意愿进行。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从命令行打开多个firefox选项卡

来自分类Dev

从命令行打开多个firefox选项卡

来自分类Dev

在命令行中选项卡自动删除

来自分类Dev

从命令行打开Chromium选项卡

来自分类Dev

尽管〜/ .bashrc和〜/ .bash_profile中都存在“ NVM_DIR”变量,但在新的命令行窗口/选项卡中无法识别“ nvm”命令

来自分类Dev

通过命令行在现有的融合实例中打开新选项卡

来自分类Dev

OSX终端从命令行关闭当前选项卡而没有提示?

来自分类Dev

Firefox-从命令行读取打开的选项卡的URL

来自分类Dev

从命令行在新选项卡中打开URL

来自分类Dev

如何打开从命令行到Firefox的URL,然后“切换到选项卡”?

来自分类Dev

如何在服务器命令行中打开新选项卡?

来自分类Dev

Firefox-从命令行读取打开的选项卡的URL

来自分类Dev

当您从命令行选项卡时,忽略文件类型

来自分类Dev

从命令行同时打开多个vim选项卡和窗口

来自分类Dev

如何打开从命令行到Firefox的URL,然后“切换到选项卡”?

来自分类Dev

从命令行列出打开的Firefox选项卡?

来自分类Dev

通过命令行从Firefox获取当前活动选项卡的URL

来自分类Dev

如何在服务器命令行中打开新选项卡?

来自分类Dev

如何从命令行打开about:blank IE选项卡?

来自分类Dev

在新选项卡的命令行gnome-terminal中执行脚本

来自分类Dev

如何在命令行中编码选项卡功能?

来自分类Dev

通过命令行从Firefox获取当前活动选项卡的URL

来自分类Dev

禁用bash选项卡完成

来自分类Dev

刷新bash选项卡完成

来自分类Dev

bash选项卡完成显示命令而不是文件和文件夹

来自分类Dev

如何在命令行中打开另一个选项卡并继续使用Fabric?

来自分类Dev

如何在命令行中打开另一个选项卡并继续使用Fabric?

来自分类Dev

如何使用项目属性的 VS 调试选项卡获取系统日期作为命令行参数

来自分类Dev

如何从bash选项卡完成选项中删除记录

Related 相关文章

  1. 1

    从命令行打开多个firefox选项卡

  2. 2

    从命令行打开多个firefox选项卡

  3. 3

    在命令行中选项卡自动删除

  4. 4

    从命令行打开Chromium选项卡

  5. 5

    尽管〜/ .bashrc和〜/ .bash_profile中都存在“ NVM_DIR”变量,但在新的命令行窗口/选项卡中无法识别“ nvm”命令

  6. 6

    通过命令行在现有的融合实例中打开新选项卡

  7. 7

    OSX终端从命令行关闭当前选项卡而没有提示?

  8. 8

    Firefox-从命令行读取打开的选项卡的URL

  9. 9

    从命令行在新选项卡中打开URL

  10. 10

    如何打开从命令行到Firefox的URL,然后“切换到选项卡”?

  11. 11

    如何在服务器命令行中打开新选项卡?

  12. 12

    Firefox-从命令行读取打开的选项卡的URL

  13. 13

    当您从命令行选项卡时,忽略文件类型

  14. 14

    从命令行同时打开多个vim选项卡和窗口

  15. 15

    如何打开从命令行到Firefox的URL,然后“切换到选项卡”?

  16. 16

    从命令行列出打开的Firefox选项卡?

  17. 17

    通过命令行从Firefox获取当前活动选项卡的URL

  18. 18

    如何在服务器命令行中打开新选项卡?

  19. 19

    如何从命令行打开about:blank IE选项卡?

  20. 20

    在新选项卡的命令行gnome-terminal中执行脚本

  21. 21

    如何在命令行中编码选项卡功能?

  22. 22

    通过命令行从Firefox获取当前活动选项卡的URL

  23. 23

    禁用bash选项卡完成

  24. 24

    刷新bash选项卡完成

  25. 25

    bash选项卡完成显示命令而不是文件和文件夹

  26. 26

    如何在命令行中打开另一个选项卡并继续使用Fabric?

  27. 27

    如何在命令行中打开另一个选项卡并继续使用Fabric?

  28. 28

    如何使用项目属性的 VS 调试选项卡获取系统日期作为命令行参数

  29. 29

    如何从bash选项卡完成选项中删除记录

热门标签

归档