बश में विंडोज शेल एस्केप की (पूरी लाइन डिलीट करें) बराबर


13

विंडोज कमांड लाइन (पावरशेल और सीएमडी) में, जब आप Escएक लाइन पर कुंजी दबाते हैं, तो आपने जो भी प्रॉम्प्ट पर टाइप किया है उसे हटा दिया जाता है।

मैंने पाया कि Escबैश प्रॉम्प्ट पर कुंजी दबाने से कुछ नहीं होता है। दबाने Escऔर फिर backspaceएक शब्द को हटाता है, लेकिन यह प्रत्येक शब्द के लिए किया जाना है।

मैं बैश को लगातार सीख रहा हूं और कभी-कभी लाइन के बीच में कुछ बेवकूफ टाइप करता हूं और महसूस करता हूं कि स्क्रैच से दोबारा टाइप करना बेहतर है। ऐसा करने के लिए, दबाने backspaceका एकमात्र तरीका है जो मैंने अब तक पाया है।

आप क्या करते हैं?

मुझे clearकमांड और Ctrl-Lशॉर्टकट के बारे में पता है , लेकिन मैं पूरे टर्मिनल को साफ करने की बात नहीं कर रहा हूं। बस रेखा।


1
कुछ समय पहले मैंने सुपरयुसर पर उपयोगी रीडलाइन कीबोर्ड शॉर्टकट की एक सूची पोस्ट की थी । आप उन्हें उपयोगी भी पा सकते हैं। (Readline वह लाइब्रेरी है जो लाइन-एडिटिंग के लिए बैश का उपयोग करती है।)
jw013

हे jw013, एक अच्छा संपादन के लिए धन्यवाद। :-)
अनिमेष

जवाबों:


15

आप चाहते हैं kill-whole-line, लेकिन यह बश में डिफ़ॉल्ट रूप से बाध्य नहीं है। backward-kill-line( CtrlX Backspace) और unix-line-discard( CtrlU) दोनों वर्तमान बिंदु से लाइन की शुरुआत तक मिटते हैं, इसलिए बस लाइन के अंत में जाएं और दोनों का उपयोग करें।


आप सही हैं, यह किसी चीज के लिए बाध्य नहीं है। मुझे अभी पता चला है कि उपयोग करना bind -P। मुझे लगता है Ctrl-Uऔर फिर Ctrl-Yएकमात्र विकल्प है।
अनिमेश

आप पाएंगे कि कई डिफ़ॉल्ट बाइंडिंग Emacs संपादक में प्रमुख अनुक्रमों से निकाली गई हैं और ये बाइंडिंग कहीं और भी दिखाई देती हैं।
ब्लर एफएल

@ अपनी टिप्पणी का विस्तार करने के लिए, इन कीबाइंडिंग्स को रीडलाइन लाइब्रेरी में सार कर दिया गया है , जो बड़ी संख्या में कमांडलाइन प्रोग्राम का उपयोग करते हैं और यही कारण है कि इन सभी में समान पंक्ति संपादन कुंजियाँ हैं।
jw013


6

Ctrl+aलाइन की शुरुआत में जाता है और लाइन Ctrl+kके अंत तक डिलीट हो जाता है


^Uपहले प्रयास करें , अधिकांश Emacs कमांड लाइन संपादन मोड कार्यान्वयन में यह पहले से ही पूरी लाइन को हटा देता है। उन जगहों पर जहां यह केवल कर्सर से छोड़ा गया है (उदाहरण के लिए जीएनयू रीडलाइन), ^Kबाद में दबाएं ।
mirabilos

3

इग्नेसियो वेज़क्वेज़-अब्राम के जवाब पर एक छोटे से विस्तार करने के लिए, आप प्राप्त कर सकते हैं (लगभग) विंडोज की तरह से व्यवहार Escजुड़ कर बैश में महत्वपूर्ण kill-whole-lineकरने के लिए Escनिम्न आदेश के साथ

bind '"\e":kill-whole-line'

यदि आप अपनी ~/.inputrcफ़ाइल में लाइन जोड़ते हैं , तो बाइंडिंग सत्रों के बीच बनी रहेगी।

ध्यान दें, हालांकि, यह बहुत ही गैर-मानक है, क्योंकि बैश वास्तव में Escकुंजी को एक अन्य संशोधित कुंजी (जैसे एक गैर-स्थिर एल्ट या Ctrl) के रूप में उपयोग करता है । यदि आप मौजूदा कुंजी बाइंडिंग (साथ bind -P) की सूची को देखते हैं, तो आप संभवतः कुंजी-संयोजनों के लिए बाध्य कई कमांड देखेंगे जो "\ e" से शुरू होते हैं (जैसे

"\eb": backward-word

जो कि संयोजन को सेट करता है Esc+ Bकर्सर को सबसे हाल के शब्द-शुरुआत में वापस ले जाने के लिए - बल्कि Ctrl+ जैसे , सिवाय इसके कि आपको जारी रखना है Esc(साथ ही साथ B, निश्चित रूप से) यदि आप इसे एक पंक्ति में एक से अधिक बार करना चाहते हैं। )।

और यह बताता है कि मैंने क्यों कहा कि आपको जो व्यवहार मिलता है वह लगभग विंडोज जैसा होता है: जब आप दबाते हैं Esc, तो यह देखने के लिए चेक दबाते हैं कि क्या आप इसे किसी अन्य कुंजी के साथ संयोजन में उपयोग कर रहे हैं; इसलिए, यदि आप इसे बांधते हैं, तो kill-whole-lineदबाने (या जारी करने, जारी करने) Escऔर आप के लिए लाइन को साफ़ करने के बीच थोड़ी देरी है ।

हालांकि, अगर आप उस बारे में किसी की परवाह नहीं करते हैं, और अपने आप को एक अलग कीस्ट्रोके को वापस लेने की बजाय देरी के साथ रहेंगे, तो यह किया जा सकता है।

(ध्यान दें: यहाँ बहुत सारी जानकारी मुझे पढ़ने के परिणामस्वरूप मिली - और इस उत्तर में दिए गए लिंक के बाद ।)


1
यह बहुत उपयोगी था, धन्यवाद, और विज्ञापित के रूप में अधिक-या-कम काम करता है। लेकिन मैंने पाया कि यह कुछ कष्टप्रद व्यवहार उत्पन्न करता है जब अन्य आदेशों को "अवैध रूप से" निष्पादित किया जाता है, जैसे कि एक पंक्ति के अंत में DEL दबाते समय: यह लाइन को साफ करेगा और इसे [19;एक समान दिखने वाले एस्केप कोड के साथ बदल देगा । अंत में मैंने मैपिंग "\e\e"को पाया kill-whole-line(यानी, लाइन को साफ़ करने के लिए Esc को दो बार टैप करें) एक अच्छा समझौता।
j_random_hacker

@j_random_hacker: एचएम, मुझे वह पसंद है। मैं Escवैसे भी अक्सर कुछ हिट करता हूं, इसलिए मैं कोशिश कर सकता हूं। मेरे पास वर्तमान में यह Ctrl+ के लिए बाध्य है , Delलेकिन मुझे यह याद नहीं है।
विल्सन एफ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.