इंटरेक्टिव शेल में पथ के हिस्से को कैसे हटाएं?


19

क्या पथ के एक घटक को हटाने के लिए bash और zsh में कोई शॉर्टकट है? उदाहरण के लिए, यदि मैं टाइप करता हूं ls ~/local/color/, और कर्सर लाइन के अंत में है, तो क्या अंत में डिलीट करने का कोई शॉर्टकट है color/? आदर्श रूप से मैं vi- मोड और emacs- मोड दोनों में समाधान चाहता हूं

जवाबों:


25

सामान्य रूप से उपयोग किए जाने वाले कीबोर्ड के लिए डिफ़ॉल्ट बैश एमएसीएस मोड में सबसे अधिक इस्तेमाल किया जाने वाला कमांड :

आंदोलन

  • Ctrl- p, या Up: पिछली कमांड
  • Ctrl- n, या Down: अगला कमांड
  • Ctrl- b, या Left: पिछला चरित्र
  • Ctrl- f, या Right: अगला चरित्र
  • Alt- b: पिछला शब्द
  • Alt- f: अगला शब्द
  • Ctrl- a, या Home: कमांड की शुरुआत
  • Ctrl- e, या End: कमांड का अंत

संपादन

  • BkSpc: पिछले चरित्र को हटाएं
  • Ctrl- d, या Del: वर्तमान वर्ण हटाएं
  • Alt- - BkSpcशब्द को बाईं ओर हटाएं
  • Alt- - dशब्द को दाईं ओर हटाएं
  • Ctrl- - uकमांड शुरू करने के लिए डिलीट
  • Ctrl- - kकमांड के अंत तक हटाएं
  • Ctrl- - yआखिरी कट पेस्ट करें

अनेक वस्तुओं का संग्रह

  • Cltr- /: पूर्ववत करें
  • Cltr- - rवृद्धावस्था पिछड़ा इतिहास खोज

2
पूरक: zsh में इस उद्देश्य के लिए एक शॉर्टकट सेट करेंbindkey [key] vi-backward-kill-word
Vayn

धन्यवाद। जब मैंने Alt + Backspace: bindkey "^ [^?" vi-पिछड़े-मार-शब्द। यह आदर्श नहीं है।
टिम स्टीवर्ट

Alt-Bckspc और Alt-d अच्छी तरह से उन filepaths के साथ काम करते हैं जिन्हें मैंने उन पर आजमाया है। (पर बैश)
संकोची

10

के लिए भी unix-filename-ruboutहै Readline!

# in ~/.inputrc
# press ctrl-b to delete unix filename parts
# see: man bash | less -p 'unix-filename-rubout' and
#      http://www.calmar.ws/vim/vi-bash.html
set editing-mode vi
set keymap vi
"\C-b": unix-filename-rubout

2
IMHO unix-filename-ruboutप्रश्न का सही उत्तर है क्योंकि यह स्लैश या व्हाट्सएप पर डिलीट हो जाता है, जबकि Alt-BkSpcहाइफन, अंडरस्कोर, डॉट, आदि जैसे पात्रों पर रुक जाएगा
स्टीव

6

डिफ़ॉल्ट bash (और मैं zsh का अनुमान लगा रहा हूं) emacs- मोड में होगा। आप कुछ इस तरह की कोशिश कर सकते हैं:

Esc + bकर्सर को एक शब्द वापस रख देगा। Ctrl + kलाइन के अंत तक हटा देगा।

अधिकांश आधुनिक गोले (जैसे बाश) उन्नत कमांड लाइन संपादन सुविधाओं को लागू करेंगे। वे कमांड या तो emacs एडिटिंग के करीब हैं (Ctrl + A लाइन की शुरुआत के लिए, Ctrl + E लाइन अंत के लिए, ...)।

यदि आप vi- जैसे संपादकों के साथ पारिवारिक हैं, तो आप vi-mode की अनुमति देने का प्रयास कर सकते हैं।

set -o vi

यह आपके शेल वी-लाइक मोड (कमांड मोड / इंसर्ट मोड) देता है, और आपको मानक कमांड (डी डिलीट, आर फॉर रिप्लेस, ...) तक पहुंच मिलती है।

वी मोड में, यहां बताया गया है कि आप वह कैसे करेंगे जो आपने वर्णित किया है:

Esc (command mode); d; b.

1
मैं यह नहीं कहूंगा कि "कमांड लाइन का संपादन वी-मोड में और भी अधिक शक्तिशाली और पूर्ण है", एमएसीएस मोड में वह सब कुछ करने की आज्ञा है जो आप vi मोड में कर सकते हैं ।
enzotib

मैं मानता हूँ कि मैं थोड़ा दूर चला गया। मैं इसे पुनःप्रकाशित करूँगा।
रहमू

मुझे याद दिलाने के लिए धन्यवाद bash में vi-mode है, इसलिए मैं dbइस परिदृश्य को bash में उपयोग कर सकता हूं । मैंने vi-backward-kill-wordzsh में भी पाया कि मुझे क्या चाहिए, और यह bash में vi-mode सेट करने से ज्यादा सुविधाजनक है। लेकिन मैं अभी भी इस उद्देश्य के लिए एक बैश मोड शॉर्टकट को बैश में ढूंढना चाहता हूं ।
वायन

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