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

4470
Emil Sit

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

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

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

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

Спасибо!

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

2 ответа на вопрос

4
a paid nerd

Попробуйте обновить до последней версии 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 
4
swift

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

compdef -d git 

Похожие вопросы