बेशक आप अब Ctrl+ का उपयोग नहीं कर सकते R। यदि आप Z शेल मैनुअल से परामर्श करते हैं, तो आप देखेंगे कि कीमैप history-incremental-search-backwardमें विजेट के लिए केवल एक महत्वपूर्ण बंधन है emacs। Vi keymaps में इसके लिए कोई महत्वपूर्ण बाइंडिंग नहीं हैं।
लेकिन जैसा कि आप मैनुअल पढ़ने से भी पाएंगे (यह अध्याय 18 है।), एक कुंजी बंधन जोड़ना bindkeyकमांड के उपयोग में एक काफी सरल अभ्यास है :
bindkey "^R" history-incremental-search-backward
आपको zleशेल फ़ंक्शन पर विजेट को मैप करने के लिए कमांड का उपयोग करने की भी आवश्यकता नहीं है , क्योंकि यह एक मानक विजेट है।
यदि आप Z शेल विकि पर इसी प्रश्न के उत्तर से परामर्श करते हैं , तो आप विशेष रूप से vi "कमांड" और "इन्सर्ट मोड" कीमैप में इसे जोड़ने के लिए कमांड देखेंगे:
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
यह भी ध्यान दें कि, जैसा कि गैरीजोन बताते हैं , vi "कमांड" कीमैप में, /चरित्र vi-history-search-backwardविजेट के लिए बाध्य है । इस विजेट और विजेट के बीच का अंतर history-incremental-search-backwardविजेट व्यवहार है जो इतिहास खोज मोड में एक बार लागू होता है। यहाँ कुछ अंतर हैं जिन्हें आप देखेंगे:
- स्विचिंग vi मोड:
- में खोज मोड
history-incremental-search-backwardके बीच टॉगल mainऔर vicmdkeymaps जब आप आह्वान vi-cmd-modeजबकि अभी भी खोज मोड में रहने विजेट। से यानी emacsमोड presssing Escकुंजी या Ctrl+ XCtrl+ Vकुंजी के बीच खोज मोड टॉगल emacsऔर vicmdkeymaps। (लागू history-incremental-search-backwardसे vicmdकीमैप जब तक आप बाँध कुछ करने के लिए, इस प्रकार परेशानी है vi-cmd-modeमें vicmdऔर साथ ही कीमैप।)
- खोज मोड विजेट को
vi-history-search-backwardमानता है और उस खोज को समाप्त कर देगा, जिस कमांड मोड से आपने खोज में प्रवेश किया था। यानी (डिफ़ॉल्ट बाइंडिंग के साथ) कमांड मोड से खोज मोड में प्रवेश करता है और कमांड मोड में वापस चला जाता है।vi-cmd-modeaccept-line/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यह करने के लिए एक रास्ताJdeBPदिखाता है , और Ctrl + R वापस के लिए कीबाइंडिंग प्राप्त करने का तरीका दिखाता है! मैं दोनों तरीकों से खेलने जा रहा हूं और बाद में जवाब स्वीकार करूंगा। मैं 1) के आधार पर तय करूंगा कि कौन सी विधि मुझे आसान लगती है और 2) जो अधिक उठती है। तुम दोनों का धन्यवाद!