मैंने हाल ही में पूछा:
हर पंक्ति में एक उपसर्ग कैसे जोड़ें?
तो नीचे दिए गए कोड से जाएं:
I said Hello
I said There
I said I am some code
इस तरह कोड करने के लिए:
Hello
There
I am some code
अब, मैं किसी पंक्ति के n वर्णों को कैसे हटाऊं?
मैंने हाल ही में पूछा:
हर पंक्ति में एक उपसर्ग कैसे जोड़ें?
तो नीचे दिए गए कोड से जाएं:
I said Hello
I said There
I said I am some code
इस तरह कोड करने के लिए:
Hello
There
I am some code
अब, मैं किसी पंक्ति के n वर्णों को कैसे हटाऊं?
जवाबों:
यह और भी आसान है! फिर से, आयत कमांड का उपयोग करें । जिस आयत को आप हटाना चाहते हैं, उसके एक कोने पर जाएँ, C-SPC
चिह्न सेट करने के लिए दबाएँ । आयत के दूसरे कोने पर जाएँ और दबाएँ C-x r d
( delete-rectangle
)। उदाहरण के लिए, उस पहली पंक्ति पर जाएँ, जिस पर आप कार्य करना चाहते हैं, दबाएँ C-a
या home
पंक्ति के आरंभ में जाएँ, जिस अंतिम पंक्ति पर आप कार्य करना चाहते हैं, उसे नीचे दाएं कोने में ले जाएँ, और फिर हटाएं।C-u number C-f
C-x r d
यदि अंतिम पंक्ति में वर्णों की वांछित संख्या से कम है, तो इसके बजाय नीचे बाएँ और ऊपर दाएं कोनों का उपयोग करना अधिक सुविधाजनक हो सकता है। वैकल्पिक रूप से, आप रद्दी वर्ण सम्मिलित कर सकते हैं (यह उपयोगी है यदि पहली पंक्ति और अंतिम पंक्ति दोनों छोटी हों)।
आप C-x r k
आयत को मारने के लिए उपयोग कर सकते हैं , जो आपको C-x r y
बाद में यैंक ( ) करने की अनुमति देता है ( उस स्थान के ऊपरी बाएं कोने में ले जाएं जहां आप इसे सम्मिलित करना चाहते हैं)।
आप खाली स्ट्रिंग का भी उपयोग C-x r t
( string-rectangle
) कर सकते हैं और प्रवेश कर सकते हैं ।
आयत कमांड स्तंभ के पदों पर आधारित हैं। यदि आप n स्तंभों के बजाय n वर्णों को हटाना चाहते हैं (जो कि बहु-स्तंभ वर्णों जैसे टैब के साथ अंतर करता है), तो आप नियमित अभिव्यक्ति प्रतिस्थापन का उपयोग कर सकते हैं : ^.\{42\}
प्रत्येक पंक्ति के पहले 42 वर्णों को हटाने के लिए कुछ भी नहीं द्वारा प्रतिस्थापित करें ।
एक और संभावना: मैं वास्तव में इस तरह के कार्यों के लिए कई कर्सर का उपयोग करना पसंद करता हूं। package.el
MELPA के माध्यम से उपलब्ध है , यह मेरे emacs का एक अनिवार्य हिस्सा बन गया है। मैं बस I said
(और संभवतः इससे पहले लाइन ब्रेक को शामिल करूंगा) का चयन करूंगा , उपयोग M-x mc/mark-all-like-this
करूंगा और अपने रास्ते पर रहूंगा। यदि आप अधिक महीन दाने वाले नियंत्रण चाहते हैं, तो आप उपयोग कर सकते हैं mc/mark-next-like-this
या कर सकते हैं mc/mark-next-lines
।
मेरी कीबाइंडिंग:
(use-package multiple-cursors
:bind (("C->" . mc/mark-next-like-this)
("C-M->" . mc/mark-all-like-this-dwim)))
अनिवार्य Emacs Rocks! एपिसोड: http://emacsrocks.com/e13.html
यदि आपने cua-mode
सक्षम किया है, तो:
मैं cua-mode
काम करने के तरीके को पसंद करता हूं , एमएसीएस मानक आयत की तुलना में जहां समकक्ष होगा:
cua-mode
मानक Emacs आयत की तुलना में तीन कुंजी दबाव बचाता है।
पूर्णता के लिए: प्रत्येक 3 पंक्ति से पहले 3 अक्षर हटाना (औपचारिक रूप से: बिंदु से, या क्षेत्र में) एक रिक्त स्ट्रिंग के साथ regexp-replacing ^...
(या अधिक सामान्यतः :) द्वारा किया जा सकता है ^.\{3\}
।
स्पष्टीकरण: regexen में, ^
इसका मतलब है "लाइन की शुरुआत", .
इसका मतलब है "किसी भी चरित्र", और \{n\}
इसका मतलब है " एन से पहले बात की पुनरावृत्ति"।
यह इंटरएक्टिव होने का एक अतिरिक्त लाभ है (जब तक कि कोई प्रेस नहीं करता है !
, जो query-regexp-replace
आगे से बिना किसी प्रश्न के सब कुछ बदल देता है )।
और एक और संभावना:
F3C-aC-3C-dC-nF4
एक कीबोर्ड मैक्रो को रिकॉर्ड करता है, जो मूल रूप से "लाइन की शुरुआत में ले जाता है, तीन वर्णों को हटाता है, और अगली पंक्ति में जाता है"। फिर, आप इसे बफर के अंत तक रीप्ले कर सकते हैं C-uF4, या C-xC-krइसे क्षेत्र में लाइनों पर लागू कर सकते हैं। इसका एक नुकसान है: यह तब टूटेगा जब किसी भी रेखा में 3 से कम वर्ण हों।