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

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

% alias -g zshplugins=~/.zshplugins

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

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

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


person simohamed    schedule 28.12.2019    source источник


Ответы (2)


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

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

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

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

zshplugins=~/.zshplugins

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

nvim $zshpl[tab]
person user1934428    schedule 28.12.2019