Tinh chỉnh tự động hoàn thành zsh git


10

Tôi vừa chuyển từ bash sang sử dụng zsh 4.3.4 trên Ubuntu Hardy. Tôi đang phát triển với git và tôi thấy mình liên tục chiến đấu với các hoàn thành git mặc định: hoàn thành tên tệp cố gắng thông minh bằng cách phát hiện những gì bạn đã thêm hoặc xóa (sử dụng tệp git-ls) nhưng đôi khi nó bị lỗi --- ví dụ, nếu bạn đang ở trong một thư mục con. Nó cũng không biết về bí danh git tùy chỉnh của tôi (ví dụ: git ci là bí danh cho cam kết).

Các siêu nhân zsh, tôi nên cải thiện tình trạng này như thế nào?

Dưới đây là một số suy nghĩ của tôi, mặc dù tôi không biết cách triển khai chúng khi tôi chưa quen với zsh, vì vậy có lẽ bạn có thể giúp đỡ hoặc cung cấp cho riêng mình:

  • Vô hiệu hóa hoàn thành tên tệp git, chỉ để lại hoàn thành tùy chọn nhánh / thẻ / tên-lệnh / lệnh-tùy chọn.
  • Thay thế hoàn thành tên tệp "thông minh" bằng hoàn thành tên tệp zsh thông thường.
  • Nhận tệp hoàn thành _git mới hơn, nếu nó sửa các lỗi này và ghi đè lên hệ thống.

Cảm ơn!



Vâng, theo như tôi có thể nói, nó chỉ thêm một dấu nhắc git và không điều chỉnh các hoàn thành cơ bản.
Emil Ngồi

Ai đó có thể chỉ cho chúng tôi cách vô hiệu hóa tất cả các hoàn thành "thông minh" cho tất cả các lệnh git không? Họ làm quá nhiều IO. Vỏ cần phải đáp ứng ngay lập tức. Tôi chỉ muốn quay trở lại hoàn thành tên tệp đơn giản cũ cho các lệnh git. Mỗi lần tôi thực hiện tìm kiếm trên web cho điều này, tôi chỉ nhận được một mê cung thông tin trang zsh man chung.
Peter Lyons

2
FYI cho bất cứ ai muốn vô hiệu hóa việc hoàn thành git gây phiền nhiễu khiến shell bị chặn khi thực hiện IO, trên Ubuntu 10.04, tôi chỉ làm điều này: sudo mv /usr/share/zsh/functions/Completion/Unix/_git /usr/share/zsh/functions/Completion/Unix/OFF_git
Peter Lyons

Câu trả lời:


5

Hãy thử nâng cấp lên phiên bản Zsh mới nhất. Tôi vừa nâng cấp từ 4.3.4 lên 4.3.10 và ít nhất nó đã khắc phục vấn đề với các bí danh Git không hoàn thành.

Thay vì hack cài đặt của tôi, tôi đã thêm nó vào địa phương của tôi .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

Đối với các dự án lớn, ngay cả các tập lệnh hoàn thành git mới hơn cũng quá chậm. Để vô hiệu hóa chúng và chỉ sử dụng hoàn thành tệp bình thường, hãy đặt lệnh sau trong .zshrc:

compdef -d git
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.