बैश: कीबोर्ड शॉर्टकट के साथ लाइन के अंत तक कर्सर से हटाएं


91

निम्नलिखित बैश प्रॉम्प्ट पर विचार करें, जहां ^प्रॉम्प्ट स्थान को दर्शाता है:

$ git commit -am "[bug 123456] Do this and that with the bug"
                               ^

मान लीजिए कि मैं एक ही बग पर फिर से एक अलग प्रतिबद्ध संदेश के साथ प्रतिबद्ध करना चाहता हूं। क्या पंक्ति के अंत तक कर्सर की स्थिति से पाठ को हटाने का कोई तरीका है?

जवाबों:


145

कर्सर से लाइन के अंत तक हटाने के लिए Ctrl+ Kका उपयोग करें ।

कर्सर से लाइन की शुरुआत तक हटाने के लिए Ctrl+ Uका उपयोग करें ।


मुख्य संयोजन क्या है?
शुशोहा

@ ShooShoSha, शिफ्ट + इंसर्ट करें
user128285

के और यू के क्या अर्थ हैं, मैं इसे अगले हफ्ते याद नहीं कर सकता हूं यदि मुझे अर्थ पता नहीं है, तो उन्हें कैसे याद किया जाए?
workplaylifecycle

2
@ जाइलो डननो लेकिन मेरा मुनीम है Brexit - the UK leaves Europe- यू शुरुआत और अंत में के को डिलीट करता है ।
स्नोक्रैश

47

यह इस बात पर निर्भर करता है कि क्या आप अपने शेल के भीतर vi ( set -o vi) या emacs ( set -o emacs) संपादन मोड का उपयोग कर रहे हैं ।

डिफ़ॉल्ट रूप से, आपका शेल आमतौर पर संपादन मोड को खाली करने के लिए डिफॉल्ट करता है।

  • Emacs मोड में, लाइन के अंत तक डिलीट कर कमांड का उपयोग करके पूरा किया जा सकता है ctrl- k

  • यदि, हालांकि, आप अपने कमांड शेल में vi संपादन मोड का उपयोग कर रहे हैं, तो वही परिणाम टाइप करके पूरा किया जा सकता है Esc(जो आपको कमांड मोड में जगह देगा) इसके बाद d- $(यदि आप पूरी पंक्ति को हटाना चाहते हैं, तो दर्ज करें dd)।

यदि आप इस बारे में अनिश्चित हैं कि आप अपने शेल में कौन से संपादन मोड का उपयोग कर रहे हैं, set -oतो कमांड लाइन से कमांड दर्ज करें और आप यह निर्धारित करने में सक्षम होंगे कि आप वर्तमान में किस एडिटिंग मोड का उपयोग कर रहे हैं:

set -o
...snip...
emacs           on
...snip...
vi              off

अपना कमांड-लाइन संपादन मोड स्विच करने के लिए, बस या तो टाइप करें:

set -o vi

या

set -o emacs

4
यदि आप एक महामारी चाहते हैं, तो Kमारने के लिए खड़ा है (कर्सर स्थिति से शुरू होने वाली रेखा)।
ग्रेगोर बोटेरो

5
Vi आदेश मोड में, Dएक ही रूप में काम करताd$
ग्लेन जैकमैन

3
+1 वास्तव में सही उत्तर लिखने और यह समझाने के लिए कि गोले इसे बदल सकते हैं।
TC1

1
>> धन्यवाद। ऐसा लगता है कि मैं vi का उपयोग कर रहा हूं, इसलिए CTRL + K चाल करता है। - एडम मटन एडम, फिर वह एमएसीएस-मोड आप में हैं, vi नहीं।
पकड़

1
कुबंटु वनरिक (कोनोसोल) में, Ctrl + K और ESC Shift + D दोनों काम करते हैं। ESC d कुछ लाइन को हटाता है (शायद 'a;' तक)। (इसके बाद एक $ टाइप करना, बस सांत्वना के लिए $ भेजता है।) मैं यह पता लगाने की कोशिश कर रहा हूं कि काफी कुछ कैसे करना है। धन्यवाद!
जो

3

यदि आप केवल Zsh और Bash में से किसी एक से परिचित हैं, तो यहां आपको महत्वपूर्ण कुंजी बाइंडिंग की आवश्यकता हो सकती है:

दे घुमा के

bind '"\C-k"':kill-line

zsh

bindkey "\C-k"      vi-kill-eol

अन्य प्रासंगिक जानकारी

प्रमुख बाइंडिंग की सूची प्राप्त करने के लिए:

# bash
bind -p

# zsh
bindkey

मैं उलझन में हूं। बैश के लिए, यह "^k" कंट्रोल + के लिए नहीं होना चाहिए ?
वेजेंड्रिया

क्षमा करें, यह मेरा व्यक्तिगत बंधन है। मैंने डिफ़ॉल्ट बाइंडिंग लगाई होगी लेकिन बैश सिंटैक्स के साथ सहज नहीं था। चूँकि आपने उल्लेख किया है कि यह क्या होना चाहिए, मैंने इसके लिए आपका शब्द लिया है और अपनी पोस्ट संपादित की है।
श्रीधर सरनोबत

1
ओह ठीक। मैं खुद इससे परिचित नहीं हूँ, लेकिन सिर्फ जाँच की और यह होना चाहिए"\C-k"
wjandrea
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.