OS X टर्मिनल में शब्दों को कैसे छोड़ें?


11

मान लीजिए कि मैंने मैक OSX टर्मिनल में एक लंबी कमांड लिखी है, अर्थात

say "Hello, how are you? I am good thank you. How is it going with you? Fine, thanks"

और अब मैं इस शब्द Helloको बदलना चाहता हूं Hi

ऐसा करने के लिए, अभी मुझे बाएं कीबोर्ड की को दबाकर रखना है (या दबाए रखना है) जब तक कि "कर्सर" शब्द के अंत तक नहीं पहुंच जाता है Hello, और फिर इसे हटा दें। सामान्य 'होल्ड डाउन ऑप्शन' तकनीक काम नहीं करती है क्योंकि यह अधिकांश अन्य ओएस एक्स अनुप्रयोगों में होता है।

क्या इसके बजाय एक समय में एक शब्द को छोड़ने का एक तरीका है (या कर्सर को प्राप्त करने का कोई अन्य छोटा तरीका)?

जवाबों:


19

कमांड लाइन संपादन आपके शेल का एक कार्य है, टर्मिनल का नहीं । संभवतः आपका शेल बैश है और शायद इसकी कमांड लाइन संपादन शैली "emacs" पर सेट है।

यहाँ कुछ Emacs- शैली के प्रमुख संयोजन दिए गए हैं जो आपको उपयोगी लग सकते हैं:

  • सीए: beginning-of-line
  • Ce: end-of-line
  • म्यूचुअल फंड: forward-word
  • Mb: backward-word
  • CD: delete-char
  • Md: kill-word(अगला 'शब्द हटाएं')
  • एम डेल: backward-kill-word

C- x का अर्थ है Control+ x, इसलिए Ca Control+ है a

M- x का अर्थ है Meta+ x, लेकिन संभवतः आपके कीबोर्ड पर कोई मेटा कुंजी नहीं है। इसलिए इसके बजाय, आप ईएससी एक्स (यानी Escapeतब x) का उपयोग कर सकते हैं । टर्मिनल के पास स्वचालित रूप से ESC भेजने के लिए एक सेटिंग है इससे पहले कि Optionनीचे दबाए गए चाबियाँ दबाएं । इस सुविधा का उपयोग विस्तारित चरित्र हैंडलिंग को अक्षम करता है जो मैक ओएस एक्स आमतौर पर विकल्प संशोधक का उपयोग करते समय प्रदान करता है। इसलिए, यदि आप कुछ विस्तारित वर्णों का उपयोग करते हैं और ईएससी x को Option+ xभेजना चाहते हैं , तो आप इस टर्मिनल विकल्प को सक्षम कर सकते हैं ।

आपके उदाहरण में "हैलो" पर जाने के बहुत सारे तरीके हैं:

  • "हैलो" के लिए खोजें: Cr H ello Cj (या ESC)
    • सामान्य Emacs में, आप Returnवर्तमान स्थान पर खोज को समाप्त करने और संपादन पर वापस लौटने के लिए RET ( ) का उपयोग करेंगे । लेकिन बैश में , डिफ़ॉल्ट बाइंडिंग RET (यानी Cm) को हमेशा चालू लाइन को निष्पादित करने का कारण बनता है, भले ही एक वृद्धिशील खोज सक्रिय हो। तो Cj / ESC हिस्सा सामान्य Emacs से विचलन है।
  • लाइन की शुरुआत में कूदें और आगे बढ़ें: Ca Mf Cf (या )
  • पंक्ति की शुरुआत में कूदें, फिर शब्दों से आगे बढ़ें: Ca Mf Mf Mb
  • एमबी का भरपूर उपयोग करें (यदि आप मेटा के विकल्प को चुनते हैं तो केवल वास्तव में संभव है)।

आपके वांछित प्रतिस्थापन को पूरा करने के कई तरीके भी हैं:

  • शब्द हटाएं और इसे प्रतिस्थापित करें: Md H i
  • वर्ण हटाएं और उन्हें प्रतिस्थापित करें: Cd Cd Cd Cd Cd H i
  • "एच" अतीत को स्थानांतरित करें और निम्न कार्य को हटा दें, इसे प्रतिस्थापित करें: Cf Md i
  • "एच" अतीत को हटाएं और शेष पात्रों को हटा दें, उन्हें बदल दें: Cf Cd Cd Cd Cd i

यदि आप शब्द के अंत में बंद हो गए हैं (शायद Ca Mf Mf के माध्यम से), तो आप M-DEL H i का उपयोग कर सकते हैं।

आप bind -P | lessअन्य दिलचस्प बाइंडिंग खोजने के लिए कुछ कर सकते हैं । परामर्श ReadLine की धारा बैश आदमी पेज (या की ReadLine भागों बैश जानकारी पृष्ठों जानकारी के लिए)।


ठीक है, यह वास्तव में सवाल से संबंधित नहीं है, लेकिन आप उन शब्दों को कैसे डालते हैं जो कीबोर्ड की तरह दिखते हैं?
वफ़र

1
@श्री। आदमी: <kbd>तत्वों का उपयोग करें । HTML का एक सबसेट यहाँ मार्कअप में अनुमति है । उपस्थिति टैग (पृष्ठभूमि, सीमा-रंग, सीमा-शैली, सीमा-चौड़ाई, आदि) के साइट-स्थानीय स्टाइल के कारण है। आप मेरे पोस्ट के स्रोत मार्कअप ( इस पृष्ठ पर "स्रोत देखें" ) की समीक्षा कर सकते हैं । Meta.stackexchange.com/questions/5527 देखें, भले ही फैंसी स्टाइल MSO पर अक्षम हो: meta.stackexchange.com/questions/1939/#23571
Chris Johnsen

मुझे यकीन नहीं है कि यह स्पष्ट है या नहीं, मुझे यह पता लगाने में एक मिनट का समय लगा, लेकिन मैं मेटा कुंजी के बिना एमबीपी पर हूं और मैं डिफ़ॉल्ट टर्मिनल कॉन्फ़िगरेशन का उपयोग कर रहा हूं। आगे और पीछे जाने के लिए शब्दों पर मैं Esc और फिर F, या Esc दबा सकता हूं और फिर B. बस इसका उल्लेख करना चाहता था क्योंकि जिस तरह से ऊपर बताया गया था वह मुझे कोशिश कर रहा था और Esc + x दबाएं और फिर f या b ...
cwd

क्या पर्यावरण या शेल को बदलने का कोई तरीका है ताकि मैं अपनी IDE से मिलान करने के लिए ctrl या fn + एरो कीज़ कर सकूं?
कोडकबॉय

1
आप set -o viअपने .bashrc में जोड़कर vi बाइंडिंग का भी उपयोग कर सकते हैं ! gnu.org/software/bash/manual/html_node/...
विल Munn

2

डिफ़ॉल्ट रीडलाइन बाइंडिंग forward-wordमेटा-एफ ( bash(1)मैन पेज, READLINE सेक्शन, कमांडिंग फॉर मूविंग सबसेंक्शन ) है। मुझे यकीन नहीं है कि मेटा ओएस ओएस एक्स में क्या अनुवाद करता है। विकल्प, शायद।


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