Spec-Zone.ru › Homebrew

brew Завершение команд оболочки

Homebrew включает определения автодополнения для команды brew. Некоторые пакеты также предоставляют определения автодополнения для собственных программ.

В настоящее время поддерживаются zsh, bash и fish.

Чтобы включить поддержку автодополнения, необходимо вручную настроить оболочку. Дело в том, что автодополнения, управляемые Homebrew, хранятся в каталоге HOMEBREW_PREFIX, о котором системная оболочка может не знать. Кроме того, поскольку автоматически настраивать автодополнения bash и zsh надёжным способом сложно, установщик Homebrew не делает этого за вас.

Автодополнения для внешних команд Homebrew не устанавливаются автоматически. Чтобы включить автодополнение для внешних команд (если оно предоставляется), необходимо связать их с HOMEBREW_PREFIX, выполнив brew completions link.

Настройка автодополнения в bash

Чтобы автодополнения Homebrew стали доступны в bash, необходимо подключить определения при запуске оболочки. Добавьте следующее в файл ~/.bash_profile (или, если его нет, в файл ~/.profile):

if type brew &>/dev/null
then
  HOMEBREW_PREFIX="$(brew --prefix)"
  if [[ -r "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh" ]]
  then
    source "${HOMEBREW_PREFIX}/etc/profile.d/bash_completion.sh"
  else
    for COMPLETION in "${HOMEBREW_PREFIX}/etc/bash_completion.d/"*
    do
      [[ -r "${COMPLETION}" ]] && source "${COMPLETION}"
    done
  fi
fi

Если вы установите формулу bash-completion, скрипт инициализации автодополнений будет подключаться автоматически (поэтому инструкции из примечаний к формуле выполнять не нужно).

Если вы используете bash от Homebrew в качестве оболочки (т. е. bash версии 4 или новее), вместо этого следует использовать формулу bash-completion@2.

Настройка автодополнения в zsh

Чтобы автодополнения Homebrew стали доступны в zsh, путь zsh/site-functions, управляемый Homebrew, необходимо добавить в FPATH до инициализации средства автодополнения zsh. Это делает brew shellenv, поэтому, если вы выполнили шаги после установки Homebrew, eval "$(brew shellenv)" должен находиться в файле ~/.zprofile (в macOS) или ~/.zshrc (в Linux). Если нужной строки там ещё нет, добавьте её в файл ~/.zshrc, а в Linux убедитесь, что она расположена после eval "$(brew shellenv)":

autoload -Uz compinit
compinit

Обратите внимание: если вы используете Oh My Zsh, он вызовет compinit при подключении oh-my-zsh.sh. В этом случае, если вы работаете в Linux, убедитесь, что eval "$(brew shellenv)" вызывается до подключения oh-my-zsh.sh — тогда дополнительная настройка не потребуется.

Также может потребоваться принудительно пересоздать zcompdump:

rm -f ~/.zcompdump; compinit

Кроме того, если при попытке загрузить эти автодополнения вы получаете предупреждения «zsh compinit: insecure directories», возможно, потребуется выполнить следующую команду:

chmod -R go-w "$(brew --prefix)/share"

Настройка автодополнения в fish

Если вы используете fish от Homebrew, настройка не требуется. Удобно!

Если ваш fish получен из другого источника, добавьте следующее в файл ~/.config/fish/config.fish:

if test -d (brew --prefix)"/share/fish/completions"
    set -p fish_complete_path (brew --prefix)/share/fish/completions
end

if test -d (brew --prefix)"/share/fish/vendor_completions.d"
    set -p fish_complete_path (brew --prefix)/share/fish/vendor_completions.d
end

Настройка автодополнения в pwsh

Чтобы автодополнения Homebrew стали доступны в pwsh (PowerShell), необходимо подключить определения при запуске оболочки. Добавьте следующее в файл PROFILE, например: ~/.config/powershell/Microsoft.PowerShell_profile.ps1:

if ((Get-Command brew) -and (Test-Path ($completions = "$(brew --prefix)/share/pwsh/completions"))) {
  foreach ($f in Get-ChildItem -Path $completions -File) {
    . $f
  }
}

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/Shell-Completion

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API