Có cách nào để bash thân thiện hơn với TAB không?


31

Tôi sử dụng bash trên cả máy Mac và vỏ Cygwin của mình. Nhìn chung, tôi khá hài lòng với nó.

Tuy nhiên, tôi có một phàn nàn là việc hoàn thành TAB của nó không tốt bằng hoàn thành TAB của Dòng lệnh Windows.

Ví dụ: nếu có hai tệp có cùng tiền tố, thì bash chỉ phát ra tiếng bíp khi tôi cố gắng hoàn thành TAB. Nếu tôi tiếp tục đóng đinh TAB, thì cuối cùng nó sẽ hiển thị cho tôi một danh sách các tệp tiềm năng.

Tôi chắc chắn thích cách Windows sẽ quay vòng qua các tệp tiềm năng ngay trên dòng lệnh.

Có cách nào để bash hoạt động tương tự Windows Command Line trong vấn đề này không?

Nếu không có (tôi không muốn chuyển đổi shell), tôi có thiếu điều gì về việc hoàn thành TAB trong bash không? Có cách nào hiệu quả hơn để sử dụng nó?

Câu trả lời:


42

Để có được 'chu trình thông qua các hành vi hoàn thành có thể', hãy sao chép phần sau vào một vị trí thích hợp trong tệp .bashrc của bạn:

[[ $- = *i* ]] && bind TAB:menu-complete

Ngoài ra, bash-hoàn thành cung cấp nhiều loại hoàn thành bổ sung ngoài việc hoàn thành tên đường dẫn. Ví dụ: hoàn thành menu hoạt động tốt với mô-đun hoàn thành bash của Git để hoàn thành tên lệnh, tên tùy chọn, v.v.


thủ tục để làm điều này cho thiết bị đầu cuối OSx là gì?
Alex

2
@Alex: Bạn chỉnh sửa tệp .bashrctrong thư mục chính của bạn để nó chứa dòng được chỉ định. Nếu .bash_profiletệp của bạn (trong cùng thư mục) không có dòng như thế source ~/.bashrc, thì bạn cũng nên chỉnh sửa nó để bao gồm một dòng như vậy. Cài đặt sẽ được kích hoạt trong các cửa sổ Terminal mới . Nếu bạn không có trình soạn thảo ưa thích, bạn có thể mở tệp trong TextEdit bằng lệnh open -e ~/.bashrc; nếu tệp chưa tồn tại, bạn sẽ cần tạo tệp đó trước bằng (ví dụ) lệnh touch ~/.bashrc.
Chris Johnsen

1
@Alex, Bash là shell mặc định vào ngày 10.3 trở lên, bao gồm 10.7 (Lion). Đầu tiên echo $SHELL. Đó sẽ là vỏ được chọn cho tài khoản người dùng của bạn. Nếu đó không phải là điều bạn muốn, bạn sẽ cần thay đổi vỏ của mình bằng chpass -s /bin/bash(hoặc bất kỳ vỏ nào bạn muốn). Nếu $ SHELL vẫn ổn, hãy kiểm tra Terminal> Preferences> Startup> Shells mở bằng:Terminal> Preferences> Settings> Profiles> Shell> Startup để xem liệu vỏ người dùng mặc định có bị ghi đè bằng lệnh tùy chỉnh không.
Chris Trang

5
Có ai có ý tưởng gì tôi nên liên kết để quay lại một tùy chọn với Shift + Tab không?
ppp

3
@ppp trong của bạn .bashrc:bind '"\e[Z":menu-complete-backward'
hầm
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.