सेट -o vi को कैसे अनसेट करें?


26

मैं बैश में vi मोड आजमाना चाहता था लेकिन अब मैं इसे वापस सामान्य में बदलना चाहूंगा।

मैं कैसे परेशान कर सकता हूं -o vi?

जवाबों:


30

केवल दो लाइन संपादन वर्तमान में उपलब्ध इंटरफेस bashहैं viमोड और emacs, मोड तो तुम सब करने की जरूरत है सेट है emacsमोड फिर से।

set -o emacs

यह ध्यान दिया जाना चाहिए कि यह मैं सीधे सवाल का जवाब देने के बजाय लाइनों के बीच पढ़ रहा था। emacsबश में डिफ़ॉल्ट लाइन संपादन मोड है। सेटिंग emacsमोड viएक साइड इफेक्ट के रूप में मोड को अक्षम करता है, लेकिन जैसा कि नीचे दिए गए jlliagre द्वारा उल्लिखित है, आप वास्तव में उन दोनों को अक्षम कर सकते हैं।
क्रिस डाउन

25

यह इस बात पर निर्भर करता है कि आप "सामान्य" क्या परिभाषित करते हैं। यदि वह लाइन संपादन बंद कर रहा है, तो शुरू करने का दस्तावेज तरीका -o viसेट करना है+o vi

$ set -o vi
$ set -o|egrep -w "(vi|emacs)"
emacs           off
vi              on
$ set +o vi
$ set -o|egrep -w "(vi|emacs)"
emacs           off
vi              off

क्रिस ने पहले ही जवाब दे दिया है कि क्या आपका सामान्य मोड एमएसीएस है।


मोड को बंद करना भी शेल हिस्ट्री फीचर को हटा देता है, अब मैं कमांड हिस्ट्री देखने के लिए अप / डाउन एरो कीज़ का उपयोग नहीं कर सकता :(
rsjethani

2
यह शेल इतिहास की सुविधा को दूर नहीं ले जाता है। आप अभी भी historyकमांड के साथ अपने इतिहास को देख सकते हैं और !चरित्र के साथ उनकी संख्या को उपसर्ग करके पिछली कमांड चला सकते हैं ।
jlliagre

हां 'इतिहास' एन परिवार कमांड अभी भी काम करता है लेकिन ऊपर / नीचे तीर कुंजी जो मैं अधिक बार उपयोग करता हूं वह काम नहीं करता है। जैसे ही मैं चाबियाँ पर किसी भी मोड को चालू करता हूं, काम करना शुरू कर देता हूं ... मुझे समझ नहीं आता?
rsjethani

3
यदि पंक्ति संपादन सक्षम है (यानी emacs या vi मोड सेट है) तो ऊपर / नीचे तीर केवल शेल द्वारा प्रबंधित किए जाते हैं। अन्यथा, तीर कुंजियाँ सिर्फ उनके भागने के क्रम को अप्रमाणित भेजती हैं।
jlliagre
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.