मैं कमांड लाइन (बैश और zsh) पर एक शब्द कैसे पीछे हटा सकता हूं?


118

मैं कमांड लाइन पर किसी शब्द को पीछे कैसे हटा सकता हूं? मैं वास्तव में Ctrl+ का उपयोग करके अंतिम 'शब्द' को हटाने वाले कुछ संपादकों के लिए उपयोग किया जाता हूं Backspace, और मैं कमांड लाइन पर भी उस कार्यक्षमता को पसंद करूंगा।

मैं इस समय बैश का उपयोग कर रहा हूं और हालांकि मैं एक शब्द के पीछे की ओर कूद सकता हूं और फिर एक शब्द को आगे हटा सकता हूं, मेरे पास यह त्वरित-कुंजी या घटना के रूप में Ctrl+ होगा Backspace

इसे कैसे पूरा कर सकते हैं?

जवाबों:


169

ctrlwमानक "किल वर्ड" (उर्फ werase) है। ctrluपूरी लाइन को मारता है ( kill)।

आप उन्हें बदल सकते हैं stty

-bash-4.2$ stty -a
speed 38400 baud; 24 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc -xcase
iflags: -istrip icrnl -inlcr -igncr -iuclc ixon -ixoff ixany imaxbel
        -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -ocrnl -onocr -onlret -olcuc oxtabs -onoeot
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
        eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = <undef>;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;
-bash-4.2$ stty werase ^p
-bash-4.2$ stty kill ^a
-bash-4.2$

ध्यान दें कि किसी को वास्तविक नियंत्रण चरित्र को लाइन पर नहीं रखना है, स्ट्टी लगाना समझता है ^और फिर वह चरित्र जिसे आप नियंत्रण से मारेंगे ।

ऐसा करने के बाद, अगर मैं हिट ctrlpकरता हूं तो यह लाइन से एक शब्द मिटा देगा। और अगर मैं मारा ctrla, तो यह पूरी लाइन को मिटा देगा।


sttyकमांड का उपयोग करके मैंने "मार शब्द" को Ctrl-v Ctrl-Backspace के बाद Ctrl+BckSpcटाइप करके असाइन करने का प्रयास stty weraseकिया। यह शाब्दिक Ctrl-Backspace चरित्र को तर्क के रूप में सम्मिलित करता है stty werase। दुर्भाग्य से यह Ctrl-Backspaceशब्द को हटाने के लिए टाइपिंग की आवश्यकता नहीं है , लेकिन सिर्फ Backspaceकुंजी के साथ काम करता है । इसलिए मैं यह जानने के लिए @terdon का अनुरोध करना चाहूंगा कि यह कैसे करना है। weraseडिफ़ॉल्ट पर रीसेट करने के लिए, का उपयोग करें stty werase Ctrl-v Ctrl-w
टिमोथी मार्टिन

@TimothyMartin मैं थोड़ा अटक गया हूं कि कैसे करना है ctrl-backspace। बैकस्पेस आमतौर पर ctrl-hया तो भेजा जाता है ctrl-?, इसलिए ctrl-backspaceकिसी तरह होगा ctrl-ctrl-backspace। मैंने यह पता लगाने की कोशिश की कि क्या कुछ अलग भेजा गया था, लेकिन पोटीन, कम से कम, जब आप टाइप करते हैं तो सिर्फ बैकस्पेस भेजता है ctrl-backspace
कर्टम

3
ctrl + w प्रभावी रूप से शब्द को हटा देता है, लेकिन यह क्लिपबोर्ड पर भी कॉपी हो जाता है, जो कुछ भी आपने संग्रहीत किया था, उसे मिटा दिया (या इसे नीचे धकेल दिया?)।
एलिय्याह लिन

1
esc - हटाएँ बस काम किया :-)
Rene Wooller 5

1
कि ... जीवन बदल रहा है। हे भगवान।
वायर्ड 00

27

आप इसके साथ भी कर सकते हैं CtrlW

एक अन्य विकल्प अपना स्वयं का शॉर्टकट सेट करना है लेकिन यह आपके द्वारा उपयोग किए जा रहे टर्मिनल एमुलेटर पर निर्भर करेगा। दूसरों के लिए xtermऔर rxvtशायद दूसरों के लिए, इस लाइन को अपने में जोड़ें ~/.inputrc(यदि मौजूद नहीं है तो फ़ाइल बनाएं):

## rxvt, xterm
"\b":backward-kill-word

gnome-terminalऔर इसका ilk AltBackspaceडिफ़ॉल्ट रूप से लगता है, लेकिन जाहिर है आपको पाने के लिए पैच readline()करना होगा CtrlBackspace

और देखें:


24

Alt+ Backspaceबाश और zsh में मेरे लिए काम करता है।


2
Itnt के साथ काम नहीं करता है :(
आकाश सतिजा

5
उदाहरण के लिए किसी URL को हटाना और किसी शब्द को हटाते समय Ctrl+Wउसका उपयोग करने से पूरा URL Alt+Backspaceडिलीट हो जाता है और विशेष वर्ण मिलने पर उसे हटाना बंद हो जाता है।
Metafaniel

और हमेशा की तरह आपको ctrl-yyank / undo / पेस्ट करना होगा।
पाब्लो ए

यह इसे इटर्म के लिए हल करता है: github.com/fish-shell/fish-shell/issues/2124
पास्कलियस

-2

मैक पर, आप उपयोग कर सकते हैं:

Fn+Delete


2
यह कर्सर के सामने 1 वर्ण को हटाता है, न कि 1 शब्द पीछे
Dannid

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