Làm thế nào tôi có thể thực hiện hoàn thành zsh giống như hoàn thành Bash?


9

Tôi chuyển sang zsh, nhưng tôi không thích hoàn thành. Nếu tôi có 20 tệp, mỗi tệp có tiền tố dùng chung, khi nhấn tab, zsh sẽ hoàn thành đầy đủ tệp đầu tiên, sau đó tiếp tục đi qua danh sách với mỗi lần nhấn tab. Nếu tôi muốn một cái gần cuối, tôi sẽ phải nhấn tab nhiều lần.

Trong bash, điều này thật đơn giản - nhấn tab và tôi sẽ nhận được tiền tố. Nếu tôi tiếp tục nhập (và nhấn tab), bash sẽ hoàn thành trong chừng mực có thể. Tôi thấy hành vi này trực quan hơn nhiều nhưng thích các tính năng khác của zsh hơn bash.

Có cách nào để có được phong cách hoàn thành này? Google đề xuất setopt bash_autolist, nhưng điều này không có tác dụng đối với tôi (và không có thông báo lỗi nào được in khi bắt đầu trình bao của tôi).

Cảm ơn.

Câu trả lời:


5

Thử:

setopt autolist
unsetopt menucomplete

Hoạt động khá tốt, không hoàn toàn giống nhau nhưng đó chắc chắn là thứ tôi có thể làm quen. Cảm ơn rất nhiều!
nsm


0

Có một tùy chọn khác nếu bạn sử dụng tùy chọn "menu select" trong .zshrc như thế này:

autoload -U compinit
compinit
zstyle ':completion:*:*:*:*:*' menu select

Bạn sẽ có thể điều hướng qua kết quả bằng các phím mũi tên. Hãy lấy ví dụ của bạn với "20 tệp có tiền tố được chia sẻ":

  • Khi lần đầu tiên nhấn [TAB], zsh sẽ hoàn thành càng nhiều càng tốt và sau đó hiển thị danh sách các khả năng
  • sau đó bạn có thể hoàn thành như bạn sẽ có trong bash (nhập một ký tự phụ, goto 0)
  • hoặc nhập lại [TAB] và sau đó bạn sẽ thấy các lựa chọn có thể được tô sáng trong menu bên dưới dấu nhắc shell của bạn; Phần thưởng, bạn có thể điều hướng trong các khả năng bằng các phím mũi tên của mình

Cuối cùng để đạt được khả năng cuối cùng:

  • với Bash, tốt nhất, bạn nhấn [TAB] rồi thêm char sau đó [TAB] lần nữa (có thể nhiều hơn)
  • với Zsh, bạn nhấn [TAB] rồi lại [TAB] (để vào menu), sau đó "& lt; -" (phím mũi tên trái) để đến các phần tử cuối cùng

Cả hai đều là 3 nét chính trong trường hợp này. Phần còn lại chủ yếu là vấn đề của hương vị.

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.