Bash tự động hoàn thành như zsh


28

Tôi đang sử dụng bash, nhưng tôi muốn tự động hoàn thành kiểu zsh (bạn nhấn tab và tab này thông qua các khả năng), thay vì bash dường như làm gì, nó hiển thị danh sách các khả năng nhưng không chọn bất cứ điều gì cho đến khi tôi nhập một số chi tiết để định hướng Làm thế nào tôi có thể có được hành vi loại zsh trong bash?

Tìm kiếm một giải pháp đã đưa ra rất nhiều câu trả lời cho các câu hỏi khác, vì vậy tôi hy vọng tôi có thể nhận được một câu trả lời đơn giản ở đây (tức là những gì cần dán vào của tôi .bashrc).

(Và để trả lời câu hỏi rõ ràng, tôi cần sử dụng bash ở đây vì tôi mới tham gia vào một nhóm và họ làm một số thứ để thiết lập bash để làm cho môi trường hoạt động dễ dàng hơn. Cuối cùng tôi có thể chắc chắn rằng tôi có nó hoạt động tương tự cách trong zsh, nhưng bây giờ sẽ dễ dàng hơn nếu tôi sử dụng bash và chỉ cần nó hoạt động giống như zsh trong quá trình sử dụng tương tác.)

Câu trả lời:


22

tôi sử dụng

bind 'TAB:menu-complete'

Để đạt được nó


11
Khi tôi thêm phần này vào .bashrc, tab sẽ chuyển qua các tùy chọn có thể thay vì liệt kê chúng trong thiết bị đầu cuối. Có thể có được cả hai hành vi?
Antonios Hadjigeorgalis

Để Shitf-Tabhoàn thành ngược, sử dụng bind '"\e[Z":menu-complete-backward'.
Ainar-G

24

Để có được sự hoàn thành đầu tiên và một danh sách, bạn có thể thêm phần sau vào bashrc

bind 'set show-all-if-ambiguous on'
bind 'TAB:menu-complete'

show-all-if-mơ hồ: Điều này làm thay đổi hành vi mặc định của các hàm hoàn thành. Nếu được đặt thành 'bật', các từ có nhiều hơn một lần hoàn thành có thể khiến các trận đấu được liệt kê ngay lập tức thay vì rung chuông. Giá trị mặc định là tắt'.

xem Hướng dẫn Bash để biết thêm thông tin.

Chỉnh sửa:

Điều này không làm cho bash hoạt động chính xác như zsh tho. Zsh sẽ hoàn thành cho đến trận đấu mơ hồ tiếp theo. Bash sẽ chỉ quay vòng qua tất cả các trận đấu.

ví dụ

$ ls ~/.ba<tab> .bashrc .bash_history .bash_profile

  • zsh: sẽ hoàn thành cho đến khi ~ / .bash và đưa ra một danh sách các trận đấu cho phép bạn nối thêm _ và nhấn <tab>lại.
  • bash: sẽ chỉ xoay vòng qua tất cả các trận đấu ~ / .ba *.

8
Tôi thích sử dụng các phím mũi tên và dấu hiệu tự động hoàn thành của zsh. Có cách nào để có được những hành vi đó với bash không? Tôi chuyển trở lại để tương thích với máy chủ tốt hơn
Cgill

2

Theo dõi câu trả lời của ingkebil , cho những người đưa bindsetvào inputrc:

$ tail -n 4 /etc/inputrc
# zsh like completion:
# /superuser/288714/bash-autocomplete-like-zsh
set show-all-if-ambiguous on
TAB:menu-complete

Tôi thích giữ .bashrcsạch sẽ của tô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.