Tự động cập nhật danh sách hoàn thành trong zsh


13

Tôi thấy danh sách kết quả của zsh để Tabhoàn thành khá hữu ích, tuy nhiên tôi muốn điều chỉnh hành vi của họ một chút:

Chúng sẽ xuất hiện khi tôi Tablần đầu tiên và sau đó tự động cập nhật với mỗi chữ cái mới được thêm vào. Hành vi mặc định là các đề xuất chỉ được đánh giá lại khi bạn Tabmột lần nữa, tôi muốn lưu phím nhấn lặp lại này. ( Cập nhật: Nhưng chỉ liệt kê các hoàn thành có thể, nó không nên tự động sửa đổi dòng nhắc nhở thực tế của tôi ngay cả khi chỉ còn một tùy chọn.)

Có cách nào để đạt được hành vi như vậy?


Bạn có thể nhận được khá sâu vào việc tùy chỉnh zshhành vi của. Điều gì sẽ xảy ra chính xác? Tại thời điểm câu hỏi này đọc giống như bạn muốn các lựa chọn được liệt kê cho mỗi lần nhấn phím sau TAB ban đầu, nhưng điều đó thực sự sẽ không hoàn thành bất cứ điều gì. Mọi phím bấm có nên hoạt động như thể nó được theo sau bởi TAB không? Hãy nhớ rằng điều này có nghĩa là khá nhiều khoảng trống cho các hoàn thành ngoài ý muốn.
Peth

@ user112553 Tùy chọn đầu tiên: Theo nghĩa đó, nó không thực sự hoạt động như một TAB lặp đi lặp lại. Tôi chỉ muốn danh sách gợi ý để tự động điều chỉnh.
F30

Câu trả lời:


2

Một cách có thể cung cấp giải pháp bạn muốn, là incremental-complete-word:

zle -N incremental-complete-word
bindkey '^Xi' incremental-complete-word

Điều này tải funtion và liên kết nó với Ctrl- X i. Bây giờ bạn có thể thử nó:

> k^Xi
incremental (complete): -no prefix-

Trong ví dụ này, chữ cái kđã được gõ, theo sau là Control-X i.

> kil
incremental (complete): kill       

Tôi đã gõ ilvà bây giờ có một khả năng hoàn thành ( kill). Người ta có thể chấp nhận điều đó và nhấn enter.

> kill^D
incremental (complete): -no prefix-
- external command -
kill      killall   killall5

Bằng cách gõ Ctrl- Dzsh cho thấy sự hoàn thành có thể.

Từ zshcontrib(1):

gia tăng-hoàn thành từ
Điều này cho phép hoàn thành gia tăng của một từ. Sau khi bắt đầu lệnh này, một danh sách các lựa chọn hoàn thành có thể được hiển thị sau mỗi ký tự bạn nhập, bạn có thể xóa bằng ^Hhoặc DEL. Nhấn return chấp nhận hoàn thành cho đến nay và đưa bạn trở lại chỉnh sửa bình thường (nghĩa là dòng lệnh không được thực thi ngay lập tức). Bạn có thể nhấn TABđể hoàn thành bình thường, ^G hủy bỏ trở lại trạng thái khi bạn bắt đầu và ^Dliệt kê các trận đấu.

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.