Hoàn thành và nơi nó đến có thể khá khó hiểu. Lấy một hệ thống Ubuntu 14.04 làm ví dụ:
$ dpkg -L zsh-common | grep git
/usr/share/zsh/functions/Completion/Debian/_git-buildpackage
/usr/share/zsh/functions/Completion/Unix/_stgit
/usr/share/zsh/functions/Completion/Unix/_git
/usr/share/zsh/functions/Completion/Unix/_topgit
/usr/share/zsh/functions/VCS_Info/Backends/VCS_INFO_get_data_git
/usr/share/zsh/functions/VCS_Info/Backends/VCS_INFO_detect_git
/usr/share/zsh/functions/Misc/run-help-git
Các zsh-common
Gói tàu git chức năng hoàn thành. Mặt khác, git
gói cũng đi kèm với các tệp hoàn thành cho bash và zsh:
$ dpkg -L git | grep compl
/etc/bash_completion.d
/etc/bash_completion.d/git-prompt
/usr/share/bash-completion
/usr/share/bash-completion/completions
/usr/share/bash-completion/completions/git
/usr/share/bash-completion/completions/gitk
Có chứa các tệp như
$ head -n 5 /usr/share/bash-completion/completions/gitk
# bash/zsh completion support for core Git.
#
# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org>
# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/).
# Distributed under the GNU General Public License, version 2.0.
Gói git thậm chí cung cấp một dấu nhắc nhận biết git có thể được kích hoạt, tất cả đều không có các addon ưa thích như oh-my-zsh.
Tóm lại, việc hoàn thành tiểu ban git có thể đến từ trình bao của bạn (zsh):
https://github.com/zsh-users/zsh/blob/master/Completion/Unix/Command/_git
từ git
https://github.com/git/git/tree/master/contrib/completion
hoặc từ các plugin như oh-my-zsh.
Để quay lại câu hỏi của bạn: Hành vi cũ của việc hoàn thành git chec
mà bạn mô tả là thực sự có lỗi. chec
vẫn còn mơ hồ và một kịch bản hoàn thành thích hợp không nên hoàn thành nó checkout
, vì có nhiều tiểu ban bắt đầu bằng chec
. Nếu bạn muốn hành vi đó, hãy tìm ra tập lệnh hoàn thành nào trong số bạn đã sử dụng trước đó, vô hiệu hóa plugin git oh-my-zsh và tiếp tục sử dụng tập lệnh hoàn thành cũ của bạn.
Ngoài ra, tôi khuyên bạn nên thiết lập bí danh và làm quen với nó. Bạn có thể dùng
git config --global alias.co checkout
để làm cho git co
mới của bạn git checkout
- plugin oh-my-zsh nhận thức được các bí danh này và vẫn sẽ hoàn thành tên nhánh và thẻ tiếp theo!
zsh
. Vì vậy, bằng "plugin git", bạn đang đề cập đến plugin git cho oh-my-zsh , bạn không Và tôi nghi ngờ bạn có nghĩa là hoàn thành Tab thay vì tự động hoàn thành. Sự khác biệt là cái đầu tiên chỉ hoàn thành sau khi nhấn Chuyển hướng và cái sau sẽ tự động thực hiện bằng cách chỉ cần gõ các lệnh bình thường. Cả hai đều có thể trongzsh
, vì vậy tôi phải hỏi.