Как объединить автоматическое заполнение zsh для аргументов функции обертки и существующую команду

Реализация туалета от GNU coreutils пытается оптимизировать ширину столбцов. При передаче его только регулярные файлы (вводил ли по стандарту или по имени), это читает каждого запись каталога для каждого файла для знания размера файла, и это знает, что все числа, которые это собирается распечатать, меньше или равны сумме размеров файлов. С регулярными файлами туалет корректирует ширину столбца соответственно. Если по крайней мере один из входных файлов не является регулярным файлом, туалет GNU использует ширину по умолчанию 7 (который может подтвердиться слишком маленький, таким образом, Вы получаете большое дополнительное пространство, или слишком большой, таким образом, Вы получаете невыровненные столбцы).

40
10.06.2014, 23:14
2 ответа

Я нашел / usr / share / zsh / functions / Completion / Unix / _git, в котором есть несколько советов для таких псевдонимов и в конечном итоге определил эти функции для псевдонимов:

_git-ls () {
  # Just return the _git-ls-files autocomplete function
  _git-ls-files
}

Затем выполните прямую compdef g = git. Система автозаполнения увидит, что вы, например, запускаете g ls и используете функцию автозаполнения _git-ls.

Как найдено Здесь

1
27.01.2020, 19:35

Вы можете обезьяна -исправлять функцию _argumentsдля расширения _vimзавершающего:

#compdef rv

_rv_vim_servers() {
    local expl
    _wanted servers expl server \
        compadd -- ${(f)"$( _call_program servers vim --serverlist 2>/dev/null )"}
}

_rv() {
  autoload +X -Uz _arguments             # Load the function body.
  functions -c _arguments _rv_arguments  # Make a copy.

  # Replace the original function.
  _arguments() {
    # Call the original function with additional completions.
    _rv_arguments "$@" \
        '(-i -l -s -t --info --list --set --target)'{-h,--help}'[print usage info]' \
        '(-h -l -s -t --help --list --set --target)'{-i,--info}'[print default vim server as stored in $GVIM_SERVER]' \
        '(-i -h -s -t --info --help --set --target)'{-l,--list}'[print list of existing vim servers]' \
        '(-i -h -l -t --info --help --list --target)'{-s,--set}'[set default vim server for the current shell]:vim servers:_rv_vim_servers' \
        '(-i -h -l -s --info --help --list --set)'{-t,--target}'[open files in a particular vim server]:vim servers:_rv_vim_servers'
  }

  {
    _vim "$@"
  } always {
    functions -c _rv_arguments _arguments  # Restore the original.
    unfunction _rv_arguments               # Discard our copy.
  }
}

_rv "$@"
0
05.11.2021, 07:37

Теги

Похожие вопросы