Tìm kiếm hoàn thành đối số giống như cá trong ZSH


8

Tôi đang loay hoay với cá và nhận thấy hành vi tiện dụng này

Nếu tôi gõ wget -<tab><tab><tab>, tôi được đưa vào một menu tương tác. Tuy nhiên, khi tôi gõ, tôi đã tìm kiếm các mô tả về chính các đối số. Tôi đã thử điều này trong zsh và gõ vào menu này dường như chỉ đưa tôi trở lại dấu nhắc tương tác của tôi. Có cách nào để đạt được chức năng tương tự trong zsh không?


Ive muốn biết làm thế nào để làm điều này trong một thời gian dài. Khi nói đến hoàn thành từ khóa tiêu chuẩn (không phải tùy chọn), vim sẽ thực hiện bằng cách cho phép bạn định cấu hình hoàn thành để giữ tập trung vào bộ đệm dòng, theo cách đó, nếu danh sách hoàn thành quá dài, bạn chỉ cần tiếp tục nhập và danh sách tự nhiên lọc xuống. Nhưng zsh ngay lập tức chuyển trọng tâm sang tiện ích chọn menu
the_velour_fog

Tôi không hiểu hành vi bạn mô tả. Đây có phải là về việc tìm kiếm các mô tả của các tùy chọn chứ không phải là tên tùy chọn? Hay đây là về cách điều hướng các lựa chọn? Menu nào bạn đang đề cập đến (zsh có rất nhiều cài đặt khác nhau để hoàn thành)?
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Vâng, bạn có thể sử dụng nó để tìm kiếm các mô tả của các tùy chọn, hoặc thậm chí chính các tên tùy chọn. Menu tôi đang đề cập sẽ xuất hiện khi bạn nhập lệnh, dấu gạch ngang, sau đó nhấn tab hai lần. Ví dụ, nhập ls -<tab><tab>vào tôi vào một menu nơi tôi có thể cuộn lên xuống các tùy chọn khác nhau. Trong cá, tôi có thể gõ, sau đó sẽ tìm kiếm các tùy chọn này và mô tả của chúng. Tôi hy vọng sẽ đạt được chức năng tương tự trong zsh.
ollien

Tôi vẫn không chắc ý của bạn là gì. Đó có phải là sự tương tác mà bạn muốn? tức là có thể chọn từ danh sách với các mũi tên và tùy chọn tô sáng? Bạn nói In fish, I'm able to type, which will then search these options and their descriptions.Bạn có thể "tìm kiếm các tùy chọn này và mô tả của chúng" trong zsh. ví dụ: ls --h<tab>tìm kiếm các tùy chọn bắt đầu bằng --hvà liệt kê bốn kết quả khớp.
Sparhawk

Hãy nhìn vào ảnh chụp màn hình này . Nếu tôi gõ ls -size<tab>tôi nhận ls --block-size và ls --size làm tùy chọn trong zsh. Tuy nhiên, cá khuyên tôi --size, --tabsize, -k, -S, --block-size và --human-readable. Tôi đã hy vọng đạt được chức năng tương tự trong zsh. Nó không chỉ tìm kiếm tên của các lệnh, nó còn tìm kiếm các mô tả
ollien

Câu trả lời:


1

Tôi nghĩ rằng điều này làm những gì bạn muốn:

  zmodload zsh/complist
  setopt menucomplete
  zstyle ':completion:*' menu select=0 search

Điều này sẽ khiến danh sách hiển thị khi bạn nhấn tab và sau đó nếu bạn tiếp tục nhập, nó sẽ tìm kiếm các tùy chọn có sẵn, bao gồm các mô tả, với một tìm kiếm gia tăng.

Bạn cũng có thể quan tâm đến cấu hình tương tự, nhưng với tương tác thay vì tìm kiếm. Trong trường hợp đó khi bạn nhập, nó sẽ lọc các phần hoàn thành thành chỉ phù hợp với những gì bạn đã nhập cho đến nay.


Hmm ... nếu tôi gõ wget -<tab>nocái này sẽ không lọc ra danh sách hoàn thành. Điều này chỉ tiếp tục gõ 'không' vào thiết bị đầu cuối sau --accept-regex=, đây là tùy chọn đầu tiên trong danh sách hoàn thành.
ollien

1
huh, đó không phải là những gì xảy ra với tôi Nhưng nó không thực sự phù hợp hơn với tùy chọn tìm kiếm, nó chỉ thực hiện tìm kiếm gia tăng thông qua các possibilites
Thayne

1

Hãy thử đặt nó trong .zshrctập tin của bạn :

 # load module for list-style selection
 zmodload zsh/complist

 # use the module above for autocomplete selection
 zstyle ':completion:*' menu yes select

 # now we can define keybindings for complist module
 # you want to trigger search on autocomplete items
 # so we'll bind some key to trigger history-incremental-search-forward function
 bindkey -M menuselect '?' history-incremental-search-forward

Bây giờ nếu bạn gõ wget -<tab>menu với tự động hoàn thành xuất hiện. Chúng tôi đã xác định keybind cho menu này, vì vậy nếu bạn nhấn ?dòng tìm kiếm sẽ xuất hiện ở đầu các phần hoàn thành:

davidsykora~%wget --referer
isearch: refe

Một số lời khuyên bổ sung:

  • bạn cũng có thể xác định bindkey -M menuselect '/' history-incremental-search-backwardcho tìm kiếm ngược
  • nếu bạn nhấn ?trong khi tìm kiếm lại, lựa chọn sẽ chuyển sang kết quả tìm kiếm tiếp theo. Sử dụng /để nhảy đến kết quả trước đó
  • phải mất rất nhiều tinh chỉnh để làm cho nó hoạt động như bạn muốn, vì vậy hãy xem complist tài liệu để tìm các chức năng và tùy chọn bổ sung
  • đối với tôi thường nhanh hơn nhiều khi sử dụng vi-insertchức năng tuân thủ - nó lọc các hoàn thành dựa trên những gì bạn nhập.
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.