Тонкая настройка автозавершения Zsh Git

10

Я только что перешел с bash на zsh 4.3.4 на Ubuntu Hardy. Я занимаюсь разработкой с помощью git, и я постоянно борюсь с выполнением git по умолчанию: завершение имени файла пытается быть умным, обнаруживая, что вы добавили или удалили (используя git-ls-файлы), но иногда это приводит к ошибкам --- например, если вы находитесь в подкаталоге. Он также не знает о моих пользовательских псевдонимах git (например, git ci в качестве псевдонима для commit).

zsh суперпользователи, как мне улучшить эту ситуацию?

Вот некоторые из моих мыслей, хотя я не знаю, как их реализовать, так как я новичок в zsh, поэтому, возможно, вы можете помочь или предложить свои собственные:

  • Отключите завершение имени файла git, оставив только завершение ветви / тега / имени команды / опции команды.
  • Замените «умное» завершение имени файла на обычное завершение имени файла zsh.
  • Получите новый файл завершения _git, если он исправляет эти ошибки, и переопределите системный.

Спасибо!

Эмиль Сит
источник
Вы пробовали github.com/robbyrussell/oh-my-zsh
ukanth
Да, насколько я могу судить, он просто добавляет подсказку git и не изменяет основные дополнения.
Эмиль Сидит
Может кто-то просто сказать нам, как отключить все «умные» завершения для всех команд git? Они делают слишком много IO. Оболочка должна реагировать мгновенно. Я просто хочу вернуться к старому доброму простому завершению имени файла для команд git. Каждый раз, когда я делаю поиск в Интернете для этого, я просто получаю лабиринт с общей информацией о man-страницах zsh.
Питер Лайонс
2
К вашему сведению для тех, кто хочет просто отключить надоедливое завершение git, которое заставляет оболочку блокировать выполнение ввода-вывода, в Ubuntu 10.04, я просто сделал это: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
Питер Лайонс,

Ответы:

5

Попробуйте обновить до последней версии Zsh. Я только что обновился с 4.3.4 до 4.3.10, и это, по крайней мере, исправляет проблему с Git-псевдонимами, которые не завершаются.

Вместо того, чтобы взломать мою установку, я добавил это в свой локальный .zshrc:

customzsh=/usr/local/src/zsh-4.3.10/bin/zsh-4.3.10
if [ "$SHELL" != "$customzsh" ]; then
  export SHELL=$customzsh
  exec $customzsh
fi
платный ботаник
источник
5

Для больших проектов даже новые скрипты завершения git слишком медленные. Чтобы отключить их и просто использовать обычное завершение файла, поместите следующую команду в ваш .zshrc:

compdef -d git
быстрый
источник