बाश के कमांड-लाइन संपादन मोड को कैसे सेट और निर्धारित करें?


10

बश viया emacsकमांड लाइन संपादन मोड को कैसे सेट किया जाए और वर्तमान में किस मोड को सेट किया जाए, यह कैसे निर्धारित किया जाए?

जवाबों:


6

चूँकि आपका प्रश्न बैश के बारे में विशिष्ट है:

इसे हर नए सत्र के लिए स्थायी रूप से सेट करने के लिए:

echo 'set -o vi' >> ~/.bashrc

या (अनुशंसित), ./inputrc में एक पंक्ति जोड़ें (या बदलें):

set editing-mode vi

यह रीडलाइन के संपादन मोड को सेट करेगा जिसका उपयोग बैश के साथ कई अन्य कार्यक्रमों द्वारा किया जाता है।

दोनों विकल्पों को खोलना आसान है:

shopt -ou vi emacs

या तो सेट करने के लिए:

set -o vi

या

shopt -os vi

उसी के लिए emacsviअनिश्चित emacsऔर उलटफेर की स्थापना ।

राज्य को सूचीबद्ध करने के लिए:

$ shopt -op emacs
set +o emacs

$ shopt -op vi
set -o vi

या दोनों एक बार में:

$ shopt -op emacs vi
set +o emacs
set -o vi

viयह निर्धारित करने के लिए कि क्या सेट है:

shopt -oq vi      &&   echo vi is set

या (ksh वाक्यविन्यास):

[[ -o vi ]]        &&   echo vi is set

Emacs:

shopt -oq emacs   &&   echo emacs is set

या:

[[ -o emacs ]]    &&   echo emacs is set

या, परीक्षण करने के लिए कि कोई विकल्प निर्धारित नहीं है:

! ( shopt -oq emacs || shopt -oq vi ) && echo no option is set

16

को set:

set -o vi

या:

set -o emacs

(एक को दूसरे set -o vi +o viको सेट करना। आप दोनों को अनसेट कर सकते हैं )

जाँच करने के लिए:

if [[ -o emacs ]]; then
  echo emacs mode
elif [[ -o vi ]]; then
  echo vi mode
else
  echo neither
fi

वह वाक्य रचना से आता है kshset -o viPOSIX है। set -o emacs(जैसा कि रिचर्ड स्टॉलमैन ने emacsPOSIX द्वारा निर्दिष्ट मोड पर आपत्ति जताई ) नहीं है, लेकिन शेल कार्यान्वयन के बीच बहुत आम है। कुछ गोले अतिरिक्त संपादन मोड का समर्थन करते हैं। [[ -o option ]]POSIX नहीं है, लेकिन ksh, bash और zsh द्वारा समर्थित है। [ -o option ]द्वारा समर्थित है bash, kshऔर yash( -oएक बाइनरी या ऑपरेटर के लिए भी ध्यान दें [)।


यह काम करता है और यह आश्चर्यजनक है, कि यह मोड को निर्धारित करना मुश्किल है।
ब्लेकन्क्स

4
set -o | egrep -w '^emacs|vi'क्या emacs या vi सेट है या नहीं।
स्टीफन हैरिस

4

भी है bind -V | grep editing-mode

man bash गहराई में पढ़ने लायक है, लेकिन विशाल है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.