Tweaking zsh git pelengkapan otomatis

10

Saya baru saja beralih dari bash ke menggunakan zsh 4.3.4 di Ubuntu Hardy. Saya mengembangkan dengan git dan saya menemukan diri saya terus berjuang dengan penyelesaian git default: penyelesaian nama file mencoba menjadi pintar dengan mendeteksi apa yang Anda tambahkan atau hapus (menggunakan file git-ls-file) tetapi kadang-kadang ada yang salah --- misal, jika Anda berada di dalam sub-direktori. Ia juga tidak tahu tentang alias git kustom saya (misalnya, git ci sebagai alias untuk komit).

zsh superuser, bagaimana saya harus memperbaiki situasi ini?

Berikut adalah beberapa pemikiran saya, meskipun saya tidak tahu bagaimana menerapkannya karena saya baru di zsh, jadi mungkin Anda dapat membantu atau menawarkan sendiri:

  • Nonaktifkan penyelesaian nama file git, hanya menyisakan cabang / tag / nama-perintah / opsi-penyelesaian perintah.
  • Ganti penyelesaian nama file "pintar" dengan penyelesaian nama file zsh biasa.
  • Dapatkan file penyelesaian _git yang lebih baru, jika memperbaiki bug ini, dan ganti yang sistem.

Terima kasih!

Emil Sit
sumber
Sudahkah Anda mencoba github.com/robbyrussell/oh-my-zsh
ukanth
Ya, sejauh yang saya tahu, itu hanya menambahkan prompt git dan tidak mengubah penyesuaian yang mendasarinya.
Emil Sit
Bisakah seseorang memberi tahu kami cara menonaktifkan semua penyelesaian "pintar" untuk semua perintah git? Mereka melakukan terlalu banyak IO. Shell perlu merespons secara instan. Saya hanya ingin kembali ke nama file lama yang bagus untuk perintah git. Setiap kali saya melakukan pencarian web untuk ini saya hanya mendapatkan labirin info halaman generik zsh.
Peter Lyons
2
FYI untuk siapa saja yang ingin menonaktifkan penyelesaian git yang mengganggu yang menyebabkan shell memblokir melakukan IO, di Ubuntu 10,04, saya hanya melakukan ini: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
Peter Lyons

Jawaban:

5

Coba perbarui ke versi terbaru Zsh. Saya baru saja memutakhirkan dari 4.3.4 ke 4.3.10 dan setidaknya memperbaiki masalah dengan alias Git yang tidak selesai.

Alih-alih meretas instalasi saya, saya menambahkan ini ke lokal saya .zshrc:

customzsh=/usr/local/src/zsh-4.3.10/bin/zsh-4.3.10
if [ "$SHELL" != "$customzsh" ]; then
  export SHELL=$customzsh
  exec $customzsh
fi
kutu buku yang dibayar
sumber
5

Untuk proyek besar, bahkan skrip penyelesaian git yang lebih baru terlalu lambat. Untuk menonaktifkannya dan hanya menggunakan penyelesaian file normal, tempatkan perintah berikut ini di .zshrc Anda:

compdef -d git
cepat
sumber