मेरे अनुभव पर नवीनतम अपडेट
0"+y$ddनिम्नलिखित मानचित्रण में हिस्सा वास्तव में कुछ ऐसा है जिसे आपको सावधानीपूर्वक सोचना चाहिए और इसे अपने स्वाद / वर्कफ़्लो / अनुभव के अनुरूप होना चाहिए।
उदाहरण के लिए, बहुत बार मैंने खुद को बफर में कई लाइनों के साथ समाप्त होने के लिए पाया है, जहां मैं केवल उस कर्सर को निष्पादित करना चाहता हूं जिस पर कर्सर है; इस मामले में मैं 0"+y$dd:%d<CR>इसके बजाय का उपयोग कर सकते हैं 0"+y$dd।
और यह संभावित परिदृश्यों में से एक है।
पसंद करने वालों के लिए अंतिम उत्तर vim
vimअपने EDITOR/ के रूप में सेट करें VISUAL, ताकि कमांड लाइन vimको संपादित करते समय, आप इसे संपादित करने के लिए उपयोग करेंगे ।
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>अपनी ~/.vimrcफ़ाइल को मैप करने के लिए रखें Leaderd(जिसे आप कमांड का संपादन करते समय शायद ही कभी उपयोग करेंगे) " +ट्रेलिंग ईओएल के बिना रजिस्टर में वर्तमान लाइन को हटा दें "।
- जब
vimसंपादक में एक कमांड का संपादन समाप्त हो गया , तो हिट करें EscapeLeaderd।
- क्लिपबोर्ड को टर्मिनल में पेस्ट करें (यह टर्मिनल-निर्भर है)।
मूल उत्तर
मुझे अक्सर ऐसा ही करने की आवश्यकता होती है, और मैं इसे निम्नानुसार करता हूं। (मैं आमतौर पर set -o viइन का उपयोग करता हूं bash, इसलिए निम्न में से अंक 1 और 2 भिन्न हैं यदि आप उपयोग करते हैं set -o emacs, तो डिफ़ॉल्ट हैं। आपके प्रश्न के आधार पर ऐसा लगता है कि अंक 1 और 2 अंक में एकीकृत हैं Ctrl+ xद्वारा पीछा किया जाता है Ctrl+ e, जो टाइप करना कठिन है, imho ।)
- मारा Escapeसामान्य मोड में हो सकता है,
- हिट vआदेश संपादित करने के लिए संपादक में प्रवेश करने,
- जैसा मैं चाहता हूं, कमांड को संपादित करें,
(यह वह जगह है जहां आप सवाल पूछते हैं।)
- मारा Escape0"+y$dd:wq,
- ध्यान दें: 0"+y$केवल नहीं "+yy, जैसा कि उत्तरार्द्ध भी नई पंक्ति की प्रतिलिपि बनाएगा, और इससे कमांड लाइन में इसे चिपकाने पर कमांड निष्पादित होगी,
- क्लिपबोर्ड को कमांड लाइन पर पेस्ट करें
- यह कैसे करना है यह आपके द्वारा उपयोग किए जा रहे टर्मिनल पर निर्भर करता है, मुझे लगता है; मैं मारा Ctrl+ Alt+ vमें
URxvt।
- अनुमोदन / मैनुअल संपादन के लिए आगे बढ़ें।
स्पष्ट रूप से यह सिर्फ एक वर्कअराउंड है, जिसमें संपूर्ण कमांड को हटाने से पहले संपादित कमांड को क्लिपबोर्ड में कॉपी करना शामिल है, ताकि संपादक से बाहर निकलने पर कुछ भी निष्पादित न हो; हालाँकि यह मेरे लिए सबसे अच्छा हो सकता है।
अपडेट करें
जैसा कि मेरे EDITOR(और VISUAL) के बराबर है vim, जब मैं कमांड को संपादित करता हूं, तो मैं इसे संपादित करता हूं vim।
इस संबंध में, मैंने देखा है कि बफर का नाम है /tmp/bash-fc.random, जहां random6-वर्ण अल्फ़ान्यूमेरिक यादृच्छिक स्ट्रिंग है।
यदि आप vimअपने संपादक के रूप में उपयोग करते हैं, तो यह बहुत सारे व्यवसायों को स्थान देता है , क्योंकि आप .vimrcपूरे अनुक्रम को निष्पादित करने के लिए कुछ मैपिंग को परिभाषित कर सकते हैं Escape0"+y$dd:wq। उदाहरण के लिए, एक कमांड जिसे आप कमांड लाइन को संपादित करते समय शायद ही कभी उपयोग करेंगे Leaderd; इसलिए आप mapअपनी .vimrcफ़ाइल में निम्न पिंग डाल सकते हैं
au BufEnter /tmp/bash-fc.* nn <Leader>d 0"+y$dd:wq<CR>
ताकि उपरोक्त नुस्खा में चरण 4 बन जाए
- मारो EscapeLeaderd
edit-and-execute-command।