Không thể chuyển tiếp tìm kiếm lịch sử Bash tương tự như với CTRL-r


203

Tôi đang cố gắng tìm kiếm lịch sử bash của mình tương tự như với CTRL- r, nhưng để chuyển hướng.

Đó là một nỗi đau đối với tôi, khi tôi chỉ đánh một lần quá thường xuyên CTRL- r, để tìm lại lệnh trước đó.

Làm thế nào bạn có thể chuyển tiếp tìm kiếm lịch sử Bash của bạn tương tự như tìm kiếm ngược?

Câu trả lời:


321

Bạn có thể tìm kiếm về phía trước là tốt. Từ sổ tay thông tin bash, " 8.2.5 Tìm kiếm các lệnh trong lịch sử ":

Để tìm kiếm ngược trong lịch sử cho một chuỗi cụ thể, hãy nhập C-r. Gõ C-stìm kiếm chuyển tiếp thông qua lịch sử.

Tuy nhiên, vấn đề với Ctrl-S là đôi khi va chạm với điều khiển luồng XON / XOFF (ví dụ trong Konsole). Tuy nhiên, tìm kiếm là một tính năng đọc và bạn có thể liên kết nó với một số khóa khác. Cập nhật: Đơn giản hơn và tốt hơn là chỉ cần vô hiệu hóa XON / XOFF bằng cách chạy

stty -ixon

4
Điều này thật tuyệt vời, nhưng tôi thêm stty -ixon vào .profile của tôi và nó dường như không hoạt động cho các tab mới. Bất kỳ ý tưởng về làm thế nào để làm cho công việc này? Tôi muốn mặc định XON / XOFF bị vô hiệu hóa.
John Gallagher

13
Trong trường hợp bất kỳ ai khác có cùng một vấn đề tôi đã làm - nếu bạn thêm vấn đề này vào .profile thì nó không có hiệu lực. Chỉ khi bạn thêm nó vào .bash_profile thì phép màu mới xảy ra! Cảm ơn về một mẹo tuyệt vời - điều này đã khiến tôi phát điên trong nhiều năm.
John Gallagher

12
@JohnGallagher Điều quan trọng cần lưu ý là .bash_profile.profilechỉ có nguồn gốc cho các vỏ đăng nhập. Tôi sẽ đặt cái này vào .bashrc(mà tôi lấy nguồn từ .profile).
Victor Zamanian

13
[[ $- == *i* ]] && stty -ixoncó thể được sử dụng để tránh sự cố được mô tả ở đây
mMontu

3
Trong trường hợp bạn đang sử dụng PuTTY và không thể / không muốn duy trì .bash_profiletrên mọi máy bạn kết nối, câu trả lời này trên superuser sẽ có tác dụng.
fazy

41

Thủ thuật tốt nhất IMHO là cho phép với pguppgdown. chỉ cần đặt nó trong của bạn~/.inputrc

"\e[5~": history-search-forward
"\e[6~": history-search-backward

đăng xuất / đăng nhập, nhập các chữ cái đầu tiên và sau đó pguphoặc pgdownđể tìm kiếm trong suốt lịch sử

ctrl-R tìm kiếm tất cả các dòng có chứa các từ, trong khi các dòng tìm kiếm theo lịch sử bắt đầu bằng các từ


2
Bạn cũng có thể bỏ ghi chú 2 dòng này vào /etc/inputrc(ví dụ trong Ubuntu).
falconepl

2
Tôi thích liên kết điều này với mũi tên lên và xuống: "\ e [A": history-search-backward và "\ e [B": history-search-Forward
shmup

Điều gì nếu điều này không có tác dụng trong bash?
Sören

26

Bạn có thể muốn thử https://github.com/dvorka/hstr cho phép lọc "kiểu hộp gợi ý" của lịch sử Bash với thứ tự dựa trên số liệu (tùy chọn), nghĩa là nó hiệu quả hơn và nhanh hơn theo cả hai chiều tiến và lùi:

nhập mô tả hình ảnh ở đây

Nó có thể được dễ dàng bị ràng buộc để Ctrl-rvà / hoặcCtrl-s


5
Tôi đang yêu. Hướng dẫn nhanh để cài đặt trên Ubuntu:sudo add-apt-repository ppa:ultradvorka/ppa; sudo apt-get update; sudo apt-get install hh; hh --show-configuration >> ~/.bashrc;
CivilFan

14

Tôi thường nhấn ESCtrong thiết bị đầu cuối, và sau đó >. Nó đặt lại ít nhất và sau đó bạn có thể thử nhấp ít quá thường xuyên CTRL+ R.


s / click / nhấn / Ngoài ra, bạn cần nhấn esc hai lần (lần đầu tiên để thoát khỏi tìm kiếm ngược).
Croad Lang Sơn
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.