【问题标题】:append to existing tcsh cmd auto-complete directive附加到现有的 tcsh cmd 自动完成指令
【发布时间】:2021-01-09 07:30:26
【问题描述】:

我想将更多部分附加到现有的命令完成(无权访问第一个创建。)

以下不起作用:

complete myscript.py `complete myscript.py` 'n,-t,(t1 t2),'

它添加了额外的记号 (') 并且自动完成功能被破坏。

希望看到一个可行的示例。 谢谢!

【问题讨论】:

    标签: shell tcsh tab-completion


    【解决方案1】:

    因此,当您询问 myscript.py 如何完成时,您只需去掉多余的引号即可。

    complete myscript.py `complete myscript.py | sed s/\'//g` 'n,-t,(t1 t2),'
    

    这应该可以解决额外引号的问题(尽管如果您现有的完整模式包含您需要的引号,那么您将需要更复杂的 sed 模式来正确清理该输出)。

    【讨论】:

    • 这是我遇到问题时尝试的第一个解决方案 :) 我实际上尝试了一个更复杂的正则表达式:sed 's/^.(.*).$/\1/' 但是结果是一个完整的命令。
    【解决方案2】:

    我找不到附加到现有完整文件的方法,所以我决定在我的 cshrc 中即时创建一个新文件,并且源是覆盖 prev 完整指令:

    set filename = `date '+%Y-%m-%d-%H-%M-%S'`
    set cmd_arr  = ( scrpt1.py scrpt2.py scrpt3.py )
    
    foreach c ($cmd_arr)
      complete | grep $c | sed  's;$; \'n,-r,`/home/\$USER/complete_rev.py`,\';' |  sed 's/^/complete /' >> $filename
    end
    
    source $filename
    rm $filename -f
    

    最棒的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-08
      • 2023-03-17
      • 2016-02-03
      相关资源
      最近更新 更多