Bash có các tính năng tương tự như tự động đề xuất và làm nổi bật của Fish không?


37

Gần đây tôi nhận thấy 2 tính năng trong Fish và tự hỏi liệu có ai biết nếu những tính năng này cũng có sẵn trong Bash không?

Cú pháp tô sáng

ss # 1

Cụ thể:

  • Bạn sẽ nhanh chóng nhận thấy rằng cá thực hiện đánh dấu cú pháp khi bạn gõ. Các lệnh không hợp lệ được tô màu đỏ theo mặc định:
  • Một lệnh có thể không hợp lệ vì nó không tồn tại hoặc đề cập đến một tệp mà bạn không thể thực thi. Khi lệnh trở nên hợp lệ, nó được hiển thị bằng màu khác
  • cá sẽ gạch chân các đường dẫn tệp hợp lệ khi bạn nhập chúng
  • Điều này cho bạn biết rằng có tồn tại một tệp bắt đầu bằng 'somefi', đây là phản hồi hữu ích khi bạn nhập.

Tự động đề xuất

ss # 2

Cụ thể:

  • fish gợi ý các lệnh khi bạn nhập và hiển thị gợi ý ở bên phải con trỏ, màu xám.
  • Nó biết về các đường dẫn và tùy chọn
  • Để chấp nhận tự động đề xuất, nhấn mũi tên phải hoặc Control-F. Nếu tự động đề xuất không phải là những gì bạn muốn, chỉ cần bỏ qua nó.

4
Về tương tự gần nhất bashcó tự động hoàn thành. Thật không may, fishkịch bản của nó rất cơ bản đến nỗi nó là một sự thay thế rất kém cho những thứ tôi thường làm với nó bash.
DopeGhoti

1
@DopeGhoti - do đó tôi hỏi Q 8-)
slm

2
Hãy thử qua một liên kết ssh độ trễ cao, bạn sẽ ghét các tính năng nội tuyến khá nhanh.
llua

1
@slm Hầu hết đó là những trường hợp góc, một số khó khăn hơn những trường hợp khác, nhưng nó có thể khá tệ khi bạn được triển khai trong nhiều môi trường. Các "tính năng sát thủ" cho 4,3 là cd -@, wait -n, globasciiranges, và $BASH_COMPAT, trong đó có rất nhiều người mong muốn. Hầu như tất cả những thứ còn lại chỉ là chữa cháy.
Chris Xuống

1
@strugee, có một cú pháp tô đậm zsh - github.com/zsh-users/zsh-syntax-highlighting , tôi đã tìm thấy nó qua oh-my-zsh rất tuyệt.
Joe Block

Câu trả lời:


2

Tôi không chắc về việc tô sáng Bash nhưng tính năng Tự động hoàn thành của Bash có khả năng Tự động đề xuất như bạn đã đề cập.

Mặc dù Tự động hoàn thành của Bash không thể hiển thị các đề xuất như bạn muốn, nhưng thực tế nó sẽ lấp đầy nội dung khi bạn nhấn [TAB]. Nếu có nhiều lựa chọn để hoàn thành nội dung, bạn nhấn [TAB] hai lần và nó hiển thị tất cả các tùy chọn.

Ví dụ:

$ cat /etc/pa[TAB]

=> không có gì xảy ra

$ cat /etc/pa[TAB][TAB]
pam.d/       passwd       paths        paths.d/

=> hiển thị tất cả các tệp / thư mục bắt đầu bằng "/ etc / pa"

Bạn có thể định cấu hình để tự động hoàn tất với bất kỳ lệnh, tham số, tệp / thư mục nào ... hoặc chơi với nó như lập trình
Thông tin thêm tại: http://www.linuxjournal.com/content/more-USE-bash-complete -chỉ huy

Nếu bạn muốn chuyển đến một lệnh trong quá khứ, nhấn ^ R sau đó nhập một số ký tự:

(reverse-i-search)`cd': cd ..

=> nhảy đến lệnh cuối cùng bắt đầu bằng "cd"

Tôi biết điều này không chính xác như bạn muốn nhưng điều đó gần như làm tương tự và giúp bạn đủ tiện lợi.


8
Cảm ơn bạn đã dành thời gian để trả lời và đưa ra gợi ý này. Tôi quen thuộc với tính năng này và sử dụng nó hàng ngày, tính năng tôi muốn là nó sẽ tự động thực hiện mà không cần phải nhấn [TAB] [TAB] để khởi tạo nó.
slm

2

Đáng tiếc là không. Nhưng tôi dự đoán, bash đó sẽ ồ ạt chậm lại nếu bạn cố gắng thực hiện các tính năng này. Có lẽ đó là lý do tại sao không ai "chuyển" các tính năng này.

Gần nhất tôi tìm thấy là https://github.com/dvorka/hstr , một hộp gợi ý vỏ


bash sang một bên:

Tôi đã không thử nghiệm nó, nhưng "thay thế được chuyển" duy nhất mà tôi tìm thấy được viết cho zsh: https://github.com/zsh-users/zsh-autosuggestions

Một số qwant'ing cũng dẫn tôi đến https://websetnet.com/shell-packs-power-python-bash/https://github.com/xonsh/xonsh bí danh http://xon.sh , có lẽ nó cũng vậy hỗ trợ ra khỏi hộp

... nhưng, tôi khá chắc chắn rằng bạn không quan tâm đến các lựa chọn thay thế khác cho bash, bởi vì sau đó bạn có thể chuyển sang dùng cá;)

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.