Câu hỏi Làm thế nào để chuyển tiếp-tìm-lịch sử với lệnh ngược-i-tìm kiếm (ctrl + r)?


Trong hướng dẫn readline

# man readline

Phần sau mô tả cách tìm kiếm lùi và tiến.

reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the  history  as  necessary.   This  is  an  incremental search.

Khi tôi nhấn ctrl + r và gõ "apt-get", tôi có thể làm một lịch sử tìm kiếm ngược lại bằng cách liên tục khai thác ctrl + r. Nhưng sau đó tôi nhấn ctrl + s và thiết bị đầu cuối không chuyển tiếp. Tôi đang làm điều gì đó không chính xác?

Tiền tố Meta "M-" đại diện cho cái gì?


10
2017-09-05 05:38


gốc




Các câu trả lời:


Trình tự C-s được lấy từ trình điều khiển thiết bị đầu cuối, như bạn có thể thấy từ

stty -a | grep '\^S'

Để giải phóng trình tự để sử dụng bằng readline, hãy đặt chuỗi thiết bị đầu cuối dừng lại thành một chuỗi khác, ví dụ như

stty stop ^J

hoặc xóa hoàn toàn bằng

stty stop undef

Sau đó C-s sẽ làm việc trong terminal đã cho.

Đặt nó vào ~/.bashrc để làm cho nó hoạt động trong mọi thiết bị đầu cuối.

Các M- chuỗi có nghĩa là Alt chính, như đã lưu ý.


14
2017-09-05 12:42



^ J là một lựa chọn tốt vì stop, nó không được sử dụng cho bất cứ điều gì khác - hobs


Ngoài việc chỉ định một TTY 'stop' char khác như đề xuất ở trên, bạn có thể xóa hoàn toàn nếu bạn không định sử dụng nó (tôi có xu hướng không), như sau:

$ stty stop undef

Sau đó, readline có thể sử dụng control-s để tìm kiếm về phía trước và bạn sẽ không nhận được bất kỳ hành vi lạ nào do một char stop mới được thêm vào.


2
2017-09-26 06:26



Đây là một cách tốt hơn nhiều. - A.Danischewski


forward-search-history (C-s) không hoạt động (mặc dù nó nằm trong trang hướng dẫn).

'M-' đại diện cho công cụ sửa đổi phím Alt.


1
2017-09-05 05:56



Không sửa C-s một phần, xem câu trả lời của tôi. - enzotib


Xin đừng sử dụng:

stty stop ^J

nhưng

stty stop ^P

hoặc bất cứ điều gì khác, như ^J làm cho vấn đề lớn với ssh. (Tôi cũng không biết tại sao.) Sau khi tôi đăng nhập Đi vào và dấu gạch chéo ngược không hoạt động. hoặc tôi phải gõ:

stty sane 
export TERM=linux

trước khi tôi muốn nhập

ssh root@192...

vì thế

stty stop ^P

giải quyết cả hai vấn đề cùng một lúc.


0
2018-04-13 12:44





Bạn có thể tắt điều khiển luồng XON / XOFF:

stty -ixon

trong của bạn ~ / .profile hoặc tương tự, thì Ctrl + S sẽ được nhận dạng.

Thí dụ


0
2018-01-15 16:48





Để chuyển tiếp khi sử dụng tìm kiếm ngược (với lệnh Ctrl-R):

  1. Mở tệp .bashrc của bạn:
      sudo gedit ~/.bashrc

  2. thêm dòng này (chữ "f" có thể được thay thế bằng chữ cái khác chưa được hệ thống sử dụng)

    bind '"\C-f": forward-search-history' 
    
  3. Đóng tệp của bạn và cập nhật .bashrc của bạn (hoặc mở một thiết bị đầu cuối khác) bằng lệnh:
    source ~/.bashrc hoặc là . ~/.bashrc

BÂY GIỜ BẠN CÓ THỂ CHUYỂN ĐỔI TRONG LỊCH SỬ VỚI SHORTCUT: Ctrl + f

Làm việc trên Ubuntu 18.04 LTS


0
2018-06-15 17:09