Tất nhiên bạn không còn có thể sử dụng Ctrl+ R. Nếu bạn tham khảo hướng dẫn sử dụng Z Shell, bạn sẽ thấy rằng chỉ có một ràng buộc chính cho history-incremental-search-backward
tiện ích trong emacs
sơ đồ bàn phím. Không có ràng buộc chính cho nó trong các keymap vi.
Nhưng như bạn cũng sẽ tìm thấy từ việc đọc hướng dẫn (Đó là chương 18.), thêm ràng buộc chính là một bài tập khá đơn giản trong việc sử dụng bindkey
lệnh:
bindkey "^R" history-incremental-search-backward
Bạn thậm chí không phải sử dụng zle
lệnh để ánh xạ widget vào hàm shell, vì đây là một widget tiêu chuẩn.
Nếu bạn tham khảo câu trả lời cho cùng một câu hỏi trên wiki Z Shell , bạn sẽ thấy các lệnh để thêm cụ thể vào các phím khóa vi "lệnh" và "chế độ chèn":
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
Cũng lưu ý rằng, như garyjohn chỉ ra , trong sơ đồ phím "lệnh" vi, /ký tự được liên kết với vi-history-search-backward
widget. Sự khác biệt giữa widget này và history-incremental-search-backward
widget là hành vi của widget được áp dụng khi một trong chế độ tìm kiếm lịch sử. Dưới đây là một vài sự khác biệt mà bạn sẽ nhận thấy:
- Chuyển chế độ vi:
- Các chế độ tìm kiếm trong
history-incremental-search-backward
Toggles giữa main
và vicmd
keymap khi bạn gọi các vi-cmd-mode
phụ tùng trong khi vẫn còn ở trong chế độ tìm kiếm. tức là từ emacs
chế độ presssing các Escchìa khóa hoặc Ctrl+ XCtrl+ Vphím Toggles chế độ tìm kiếm giữa emacs
và vicmd
keymap. (Gọi history-incremental-search-backward
từ vicmd
sơ đồ bàn phím là rất rắc rối, trừ khi bạn cũng liên kết một cái gì đó vi-cmd-mode
trong vicmd
sơ đồ bàn phím.)
- Chế độ tìm kiếm trong
vi-history-search-backward
xử lý vi-cmd-mode
widget như accept-line
và sẽ kết thúc tìm kiếm, nhập lại chế độ lệnh mà bạn đã nhập tìm kiếm từ đó. tức là (với các ràng buộc mặc định) /vào chế độ tìm kiếm từ chế độ lệnh và Escquay lại chế độ lệnh.
- Lặp lại tìm kiếm:
- Trong
history-incremental-search-backward
, cả history-incremental-search-backward
và các vi-rev-repeat-search
vật dụng được công nhận. tức là (giả sử rằng bạn đã thay đổi các ràng buộc như trên) cả Ctrl+ Rvà Nsẽ tìm kiếm một dòng khớp trước đó.
- Trong
vi-history-search-backward
, chỉ có các vi-rev-repeat-search
widget được công nhận. tức là (giả sử rằng bạn đã thay đổi các ràng buộc như trên) Ctrl+ Rsẽ gây ra tiếng bíp và bị bỏ qua.
garyjohn
hiển thị cách Vim để thực hiện vàJdeBP
hiển thị cách lấy lại liên kết phím cho Ctrl + R! Tôi sẽ chơi với cả hai phương pháp và chấp nhận câu trả lời sau. Tôi sẽ quyết định dựa trên 1) phương pháp nào có vẻ dễ dàng hơn đối với tôi và 2) phương pháp nào được nhiều người ủng hộ hơn. Cám ơn hai bạn!