बेशक आप अब 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
और vicmd
keymaps जब आप आह्वान vi-cmd-mode
जबकि अभी भी खोज मोड में रहने विजेट। से यानी emacs
मोड presssing Escकुंजी या Ctrl+ XCtrl+ Vकुंजी के बीच खोज मोड टॉगल emacs
और vicmd
keymaps। (लागू history-incremental-search-backward
से vicmd
कीमैप जब तक आप बाँध कुछ करने के लिए, इस प्रकार परेशानी है vi-cmd-mode
में vicmd
और साथ ही कीमैप।)
- खोज मोड विजेट को
vi-history-search-backward
मानता है और उस खोज को समाप्त कर देगा, जिस कमांड मोड से आपने खोज में प्रवेश किया था। यानी (डिफ़ॉल्ट बाइंडिंग के साथ) कमांड मोड से खोज मोड में प्रवेश करता है और कमांड मोड में वापस चला जाता है।vi-cmd-mode
accept-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) जो अधिक उठती है। तुम दोनों का धन्यवाद!