Я пытаюсь настроить функцию zsh, которая возвращает меня в каталог git верхнего уровня с необязательным аргументом для перемещения относительно этого каталога. В настоящее время я получил это, которое работает:
alias gitdir='git rev-parse --show-toplevel'
cdgit() { cd $(gitdir)/$1 }
Проблема в том, что завершение табуляции не работает должным образом, оно будет автоматически завершаться из любого каталога, в котором я нахожусь, когда я запускаю cdgit
, но я хочу, чтобы оно завершалось из $(gitdir)
. Если я введу следующую строку перед запуском cdgit
, завершение будет работать правильно (из $(gitdir)
):
compctl -W $(gitdir) -/ cdgit
Однако я не хочу вводить эту команду каждый раз, прежде чем набрать cdgit
просто чтобы получить завершение табуляции. Есть ли способ сделать функцию завершения для cdgit
которая будет каким-то образом запускать эту команду, чтобы мое завершение было правильным?