【问题标题】:Zsh completion case insensitive _multi_parts functionZsh 完成不区分大小写的 _multi_parts 函数
【发布时间】:2017-08-24 20:04:37
【问题描述】:

我有一个脚本,它接受类似文件的参数(多部分参数),我正在获取可能的值并将它们放入一个名为 raw 的数组中,然后使用

_multi_parts / "(${raw[@]})" 

自动完成。问题是这是区分大小写的,我怎样才能让它输入mycommand get fo并按Tab,如果Foo是原始内容之一,它将自动完成到mycommand get Foo/。

完整的完成在这里供参考:

_mycommand() {
  local curcontext="$curcontext" state line

  _arguments "1: :->command" "*: :->label"

  case $state in
  command)
    _arguments "1: :(add get ls rm)"
  ;;
  *) 
    case $words[2] in
      add|get|ls|rm)
        if [ -f ~/.pts ]; then
          IFS=$'\n' read -d '' -r raw <<< "$(mycommand ls)"
          _multi_parts / "(${raw[@]})"
        fi
      ;;
      *)
        _files
      ;;
    esac
  esac
}

_mycommand "$@"

mycommand ls 输出类似如下名称的路径:

Foo/Bar/x
Foo/Bar/y
Derp/z
Placeholder/z

【问题讨论】:

    标签: zsh zsh-completion


    【解决方案1】:

    好的,我想通了:

    换行

    IFS=$'\n' read -d '' -r raw <<< "$(mycommand ls)"
    _multi_parts / "(${raw[@]})"
    

    到

    IFS=$'\n' raw=($(mycommand ls))
    _multi_parts -M "m:{[:lower:][:upper:]}={[:upper:][:lower:]}" / raw
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 2013-04-08
      • 2012-01-29
      • 2014-09-25
      相关资源
      最近更新 更多