Zsh अक्षम कीबोर्ड शॉर्टकट में EDITOR के रूप में निर्यात क्यों होता है?


23

मेरा .zshrcऐसा दिखता है:

export EDITOR="/usr/bin/vim"

अब जब मैं एक टर्मिनल खोलता हूं और एक कीबोर्ड शॉर्टकट दर्ज करता हूं जैसे ctrlaकि लाइन की शुरुआत में जाना, यह काम नहीं करता है। इसके बजाय, स्ट्रिंग ^A(या कुछ अन्य स्ट्रिंग, जो मेरे द्वारा दर्ज किए गए शॉर्टकट के आधार पर) टर्मिनल में प्रवेश करती है:

emlai:~ % ^A

exportमेरे शब्द को हटाने से .zshrcकीबोर्ड शॉर्टकट ठीक से काम करता है:

EDITOR="/usr/bin/vim"

कीबोर्ड शॉर्टकट काम करने की EDITORतुलना में कुछ और के रूप में निर्यात vimकरना, जैसे:

export EDITOR="/usr/bin/nano"

क्यों होता है ऐसा?

मैंने इसके साथ bashही परीक्षण किया , और कीबोर्ड शॉर्टकट सभी मामलों में ठीक से काम करते हैं।

जवाबों:


27

zshअधिकांश आधुनिक गोले में कमांड-लाइन संपादन के लिए दो अलग-अलग कीबोर्ड मैपिंग के बीच एक विकल्प होता है: viएक और emacsएक। कुछ गोले में (जैसे tcshया readline-बड़े हुए जैसे bash), emacsएक डिफ़ॉल्ट है और शायद एक जिसे आप उम्मीद करते हैं।

के साथ zsh, आप emacsडिफ़ॉल्ट रूप से तब तक मोड प्राप्त करते हैं जब तक कि इसमें $EDITORया $VISUALशामिल न हो vi(यदि आप एक vi/ nvi/ vim/ elvisउपयोगकर्ता हैं (हालांकि यह भी vimacsऔर यदि $EDITORहै ...), मान लें कि आप मोड को पसंद करते हैं)।/home/victor/bin/emacszshvi

मान के बिना किसी विशेष मोड को बाध्य करने के लिए $EDITOR, जोड़ें:

bindkey -e # for emacs
bindkey -v # for vi

या उनके अधिक पोर्टेबल समकक्ष:

set -o emacs
set -o vi

अपने को ~/.zshrc। देख

info -f zsh -n Keymaps

ब्योरा हेतु।


दिलचस्प। वहाँ का उपयोग करने के किसी भी कारण है bindkeyसे अधिक set -o?
ज़ेनथ

@ मेग्निथ, शायद नहीं। bindkeytcsh रास्ता और मूल तरीका है। आजकल उन्हें समकक्ष होना चाहिए।
स्टीफन चेज़लस
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.