Завершение Zsh для глобальных псевдонимов

Есть ли способ получить завершение табуляции для глобальных псевдонимов в zsh? Определяется как:

% alias -g zshplugins=~/.zshplugins

% nvim zshpl[tab] вкладка не будет завершена.

Я использую глобальные псевдонимы в основном для того, чтобы не вводить путь к файлу и не ограничивать себя одной командой (например, alias zshplugin="nvim ~/.zshplugins")

Я понимаю, что они также предназначены для использования внутри произвольных однострочных (глобальный псевдоним для | grep -i, например), и не имеет смысла предлагать их при каждом нажатии табуляции, но если есть какое-то обходное решение, чтобы включить их в завершение каталога / файла, это было бы здорово.

2 ответа

Решение

Вы должны использовать переменную оболочки, но не глобальный псевдоним.

Но если хотите, добавьте в свой zshrc

_complete_alias() {
    [[ -n $PREFIX ]] && compadd -- ${(M)${(k)galiases}:#$PREFIX*}
    return 1
}
zstyle ':completion:*' completer _complete_alias _complete _ignored

Было бы zshpl[tab]завершить в начале строки (без nvim)? Это то, над чем я должен работать. Псевдоним не предназначен для использования в качестве ярлыка для имени файла. Для последних можно использовать переменные оболочки (и для них тоже есть завершение). Я предлагаю вам определить

zshplugins=~/.zshplugins

а затем сделать

nvim $zshpl[tab]
Другие вопросы по тегам