Làm cách nào để hoàn thành zsh giống như hoàn thành bash?


17

Tôi là một chuyển đổi gần đây từ bash sang zsh (mà tôi đang sử dụng "oh my zsh" với), nhưng có một điều làm tôi khó chịu:

Khi tôi nhấn phím tab, tự động hoàn thành đầu tiên sẽ tự động được điền và bạn cần quay vòng qua các lần hoàn thành bằng cách nhấn liên tục vào tab.

Điều này khác với bash, nơi bạn chỉ được hiển thị một danh sách các hoàn thành. Nếu tất cả các lần hoàn thành có cùng một tiền tố, thì tiền tố này được điền vào. Bạn có thể chọn cái bạn muốn bằng cách tiếp tục nhập.

Tôi thấy cái sau thích hợp hơn vì nó nhanh hơn để gõ, hơn là chọn hoàn thành bằng cách nhấn tab liên tục.

Có cách nào để làm cho zsh hoàn thành hành động giống như bash trong vấn đề này?

Câu trả lời:


18
setopt noautomenu
setopt nomenucomplete

Bạn cần cả hai. Nếu bạn nhấn tab đủ số lần, bạn sẽ nhận được danh sách hoàn thành nhưng nó sẽ không bao giờ thêm bất kỳ ký tự nào vào nội dung bạn đã nhập cho đến nay.


3

Tôi không nghĩ đó là hành vi mặc định, nhưng bạn có thể tắt nó bằng cách sử dụng:

setopt +o menucomplete

Các thiết lập khác có ảnh hưởng đến hành vi này theo những cách khác nhau bao gồm: autolist, automenu, bashautolist, listambiguous. Xem phần "Hoàn thành" man zshoptionsđể biết chi tiết. Bạn có thể thêm lệnh này vào ~/.zshrctập tin của bạn .

Bạn có thể cấu hình nhiều thứ khác một cách tương tác bằng cách thực hiện:

autoload -U compinstall
compinstall

và làm theo lời nhắc và menu.

Trong Bash, hành vi này được kiểm soát bằng cách ràng buộc Tabvới completehoặc menu-completetrong ~/.inputrc:

"\C-i": complete   # do list completion

hoặc từ dấu nhắc shell hoặc trong ~/.bashrc:

bind '"\C-i": menu-complete' # do menu completion

1
Nhận xét meta: làm thế nào bạn có được ký tự "tab" trông như thế?
Người tốt

2
@ Người tốt:<kbd>Tab</kbd>
Tạm dừng cho đến khi có thông báo mới.
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.