แน่นอนคุณไม่สามารถใช้Ctrl+ Rได้อีก หากคุณศึกษาคู่มือ Z Shell คุณจะเห็นว่ามีเพียงการเชื่อมโยงคีย์สำหรับhistory-incremental-search-backward
วิดเจ็ตในemacs
keymap ไม่มีการโยงคีย์สำหรับคีย์ใน vi keymaps
แต่ตามที่คุณจะพบได้จากการอ่านคู่มือ (บทที่ 18) การเพิ่มการเชื่อมโยงคีย์เป็นการออกกำลังกายที่ค่อนข้างง่ายในการใช้bindkey
คำสั่ง:
bindkey "^R" history-incremental-search-backward
คุณไม่จำเป็นต้องใช้zle
คำสั่งเพื่อแมปวิดเจ็ตไปยังฟังก์ชันเชลล์เนื่องจากนี่เป็นวิดเจ็ตมาตรฐาน
หากคุณศึกษาคำตอบของคำถามเดียวกันนี้ที่อยู่ในวิกิ Z เชลล์คุณจะเห็นคำสั่งสำหรับการเพิ่มคีย์แมป "คำสั่ง" และโหมดแทรก "โดยเฉพาะ:
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
นอกจากนี้โปรดทราบว่าในขณะที่ garyjohn ชี้ให้เห็นใน keymap คำสั่ง "vi" /อักขระจะถูกผูกไว้กับvi-history-search-backward
วิดเจ็ต ความแตกต่างระหว่างวิดเจ็ตนี้และhistory-incremental-search-backward
วิดเจ็ตเป็นพฤติกรรมวิดเจ็ตที่ใช้ครั้งเดียวในโหมดการค้นหาประวัติ นี่คือความแตกต่างสองสามอย่างที่คุณจะสังเกตเห็น:
- การสลับโหมด vi:
- โหมดการค้นหา
history-incremental-search-backward
สลับระหว่างmain
และปุ่มกดvicmd
เมื่อคุณเรียกใช้vi-cmd-mode
วิดเจ็ตในขณะที่ยังคงอยู่ในโหมดค้นหา เช่นจากemacs
โหมด presssing EscสำคัญหรือCtrl+ XCtrl+ Vปุ่มสลับโหมดการค้นหาระหว่างemacs
และvicmd
keymaps (การเรียกใช้history-incremental-search-backward
จากvicmd
keymap นั้นจะยุ่งยากถ้าคุณไม่ผูกอะไรไว้vi-cmd-mode
ในvicmd
keymap เช่นกัน)
- โหมดการค้นหาในการ
vi-history-search-backward
ปฏิบัติต่อvi-cmd-mode
เครื่องมือเป็นaccept-line
และจะสิ้นสุดการค้นหาเข้าสู่โหมดคำสั่งที่คุณป้อนการค้นหาอีกครั้ง ie (พร้อมการผูกค่าเริ่มต้น) /เข้าสู่โหมดค้นหาจากโหมดคำสั่งและEscกลับไปที่โหมดคำสั่ง
- ค้นหาซ้ำ:
- ใน
history-incremental-search-backward
ทั้งสองhistory-incremental-search-backward
และvi-rev-repeat-search
วิดเจ็ตได้รับการยอมรับ เช่น (สมมติว่าคุณได้ทำการเปลี่ยนแปลงการผูกไว้ด้านบน) ทั้งCtrl+ RและNจะค้นหาบรรทัดที่ตรงกันก่อนหน้า
- ใน
vi-history-search-backward
เพียงvi-rev-repeat-search
เครื่องมือที่ได้รับการยอมรับ เช่น (สมมติว่าคุณเปลี่ยนแปลงการผูกไว้ด้านบน) Ctrl+ Rจะทำให้เกิดเสียงบี๊บและถูกละเว้น
garyjohn
แสดงวิธีการ Vim ที่จะทำและJdeBP
แสดงวิธีรับ keybinding สำหรับ Ctrl + R กลับมาแล้ว! ฉันจะเล่นกับทั้งสองวิธีและยอมรับคำตอบในภายหลัง ฉันจะตัดสินใจตาม 1) วิธีการใดที่ดูเหมือนง่ายสำหรับฉันและ 2) ซึ่งได้รับการโหวตมากขึ้น ขอบคุณทั้งคุณ!