Theo mặc định, công cụ hoàn thành của zsh chỉ cố gắng thêm một cái gì đó vào những gì bạn nhập. Bạn đã cấu hình nó để thử thêm tiền tố. Công cụ cấu hình hoàn thành tương tác đơn giản ( compinstall
) cung cấp điều này trong điều khiển kết hợp của → → hoàn thành chuỗi con. Điều này chèn một dòng như thế này trong của bạn .zshrc
:
zstyle ':completion:*' matcher-list '' 'l:|=* r:|=*'
Các zstyle
cài đặt hoàn thành (chủ yếu) cài đặt hoàn thành. Các matcher-list
phong cách hoàn thành là một danh sách các cách thử liên tiếp, dừng lại khi có ít nhất một trận đấu. Chuỗi rỗng có nghĩa là hoàn thành mặc định (chỉ có hậu tố). Câu thần chú điều khiển phù hợpl:|=* r:|=*
có nghĩa là thử kết hợp tiền tố *
và kết hợp hậu tố *
, tức là bất kỳ tiền tố và hậu tố.
Bạn có thể cấm các tiền tố bắt đầu bằng _
hoàn toàn. Điều này vẫn cho phép hoàn thành các từ bắt đầu _
và hoàn thành bằng cách thêm tiền tố, nhưng tiền tố có thể không bắt đầu bằng _
.
zstyle ':completion:*' matcher-list '' 'l:|=[^_]* r:|=*'
Điều này áp dụng cho tất cả các lần hoàn thành, không chỉ hoàn thành tên lệnh. Tôi không biết làm thế nào để hạn chế điều này với tên lệnh.
Cần có một cách để loại trừ chính xác hơn các tên lệnh bắt đầu _
, nhưng tôi không biết làm thế nào. Một khởi đầu đầu tiên là với ignored-patterns
phong cách hoàn thành.
zstyle ':completion:*:*:-command-:*:*' ignored-patterns '_*'
Điều này không bao gồm các trận đấu bắt đầu bằng _
; tuy nhiên, nếu không có kết quả khớp, thì zsh sẽ thử lại mà không bỏ qua các quy tắc. Điểm hay của việc này là nếu lệnh bắt đầu bằng dấu gạch dưới ở vị trí đầu tiên, nó sẽ được hoàn thành trong lần chuyển thứ hai này. Phần xấu là zsh do đó sẽ cố gắng thêm một dấu gạch dưới anyway nếu không có trận đấu, vì vậy nếu bạn có vi
và view
nhưng không phải vim
sau đó nhấn Tabsau vi
sẽ cung cấp vi
và view
nhưng không _vim
, nhưng nếu bạn gõ vim
sau đó hoàn thành sẽ cung cấp _vim
.