Poprawianie autouzupełniania zsh git

10

Właśnie przełączyłem się z bash na używanie zsh 4.3.4 na Ubuntu Hardy. Pracuję z git i ciągle walczę z domyślnymi uzupełnieniami git: uzupełnianie nazw plików próbuje być inteligentne, wykrywając to, co dodałeś lub usunąłeś (używając plików git-ls), ale czasem robi się źle --- np. jeśli jesteś w podkatalogu. Nie wie także o moich niestandardowych aliasach git (np. Git ci jako alias do zatwierdzenia).

administratorzy Zsh, jak powinienem poprawić tę sytuację?

Oto kilka moich przemyśleń, choć nie wiem, jak je wdrożyć, ponieważ jestem nowy w Zsh, więc może możesz pomóc lub zaoferować własne:

  • Wyłącz uzupełnianie nazwy pliku git, pozostawiając jedynie zakończenie gałęzi / tagu / nazwy polecenia / polecenia.
  • Zamień „inteligentne” uzupełnianie nazw plików na zwykłe uzupełnianie nazw plików zsh.
  • Pobierz nowszy plik zakończenia _git, jeśli to naprawi te błędy, i zastąp systemowy.

Dzięki!

Emil Sit
źródło
Czy próbowałeś / aś github.com/robbyrussell/oh-my-zsh
ukanth
Tak, o ile wiem, po prostu dodaje polecenie git i nie poprawia podstawowych uzupełnień.
Emil Sit
Czy ktoś może nam powiedzieć, jak wyłączyć wszystkie „inteligentne” uzupełnianie dla wszystkich poleceń git? Robią za dużo IO. Powłoka musi natychmiast zareagować. Chcę tylko wrócić do dobrego, starego, prostego uzupełniania nazw plików dla poleceń git. Za każdym razem, gdy szukam tego w sieci, po prostu otrzymuję labirynt ogólnych informacji o stronie podręcznika Zsh.
Peter Lyons,
2
Do Twojej wiadomości dla każdego, kto chce po prostu wyłączyć irytujące zakończenie git, które powoduje, że powłoka blokuje wykonywanie IO, na Ubuntu 10.04, właśnie to zrobiłem: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
Peter Lyons

Odpowiedzi:

5

Spróbuj zaktualizować do najnowszej wersji Zsh. Właśnie uaktualniłem z 4.3.4 do 4.3.10 i to przynajmniej rozwiązuje problem z niedokończeniem aliasów Git.

Zamiast włamać się do mojej instalacji, dodałem to do mojego lokalnego .zshrc:

customzsh=/usr/local/src/zsh-4.3.10/bin/zsh-4.3.10
if [ "$SHELL" != "$customzsh" ]; then
  export SHELL=$customzsh
  exec $customzsh
fi
opłacony kujon
źródło
5

W przypadku dużych projektów nawet nowsze skrypty ukończenia git są zdecydowanie zbyt wolne. Aby je wyłączyć i po prostu użyć normalnego uzupełniania plików, umieść następujące polecenie w .zshrc:

compdef -d git
szybki
źródło