【问题标题】:Zsh underline common completion prefixzsh 下划线常用补全前缀
【发布时间】:2014-07-31 02:31:35
【问题描述】:

我见过像thiszsh.org 线程和this Reddit 线程这样的东西,它们展示了如何用颜色突出显示完成的公共前缀。不幸的是,这会覆盖我设置的LS_COLORS。我从我的LS_COLORS 中获得了很多信息,如果可能的话,我希望他们不要管。相反,我宁愿用下划线标注公共前缀(保留颜色)。

像这样

但用下划线代替颜色,让我的LS_COLORS 完好无损。

编辑:

我有一个可能的解决方案,但它需要能够为不同的标签(而不是组)指定不同的list-colors。我们将每种类型的文件(符号链接、管道等)放入它自己的标签中,并有一个包含所有文件的组。

【问题讨论】:

    标签: linux zsh zsh-completion


    【解决方案1】:

    一个带有警告的解决方案:

    ls_colors_parsed=${${(@s.:.)LS_COLORS}/(#m)\**=[0-9;]#/${${MATCH/(#m)[0-9;]##/$MATCH=$MATCH=04;$MATCH}/\*/'(*files|*directories)=(#b)($PREFIX:t)(?)*'}}
    
    function _list_colors () {
      local MATCH
      reply=("${(e@s/ /)ls_colors_parsed}")
    
      # fallback to a catch-all
      reply+=("=(#b)($PREFIX:t)(?)*===04")
    }
    
    zstyle -e ':completion:*:default' list-colors _list_colors
    

    这在慢速机器上会变慢,而且它只适用于文件模式匹配,而不适用于文件类型(目录、FIFO 等)匹配。但是,当没有 PREFIX 或 PREFIX 是完全匹配时,这些仍然会通过。

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 2017-03-17
      • 2022-11-13
      • 2020-03-24
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      相关资源
      最近更新 更多