हर लाइन के पहले कुछ n वर्ण कैसे हटाएं?


15

मैंने हाल ही में पूछा:

हर पंक्ति में एक उपसर्ग कैसे जोड़ें?

तो नीचे दिए गए कोड से जाएं:

I said Hello
I said There
I said I am some code

इस तरह कोड करने के लिए:

Hello
There
I am some code

अब, मैं किसी पंक्ति के n वर्णों को कैसे हटाऊं?


IMHO यह आपके पिछले प्रश्न के समान है।
a_P

जवाबों:


28

यह और भी आसान है! फिर से, आयत कमांड का उपयोग करें । जिस आयत को आप हटाना चाहते हैं, उसके एक कोने पर जाएँ, C-SPCचिह्न सेट करने के लिए दबाएँ । आयत के दूसरे कोने पर जाएँ और दबाएँ C-x r d( delete-rectangle)। उदाहरण के लिए, उस पहली पंक्ति पर जाएँ, जिस पर आप कार्य करना चाहते हैं, दबाएँ C-aया homeपंक्ति के आरंभ में जाएँ, जिस अंतिम पंक्ति पर आप कार्य करना चाहते हैं, उसे नीचे दाएं कोने में ले जाएँ, और फिर हटाएं।C-u number C-fC-x r d

यदि अंतिम पंक्ति में वर्णों की वांछित संख्या से कम है, तो इसके बजाय नीचे बाएँ और ऊपर दाएं कोनों का उपयोग करना अधिक सुविधाजनक हो सकता है। वैकल्पिक रूप से, आप रद्दी वर्ण सम्मिलित कर सकते हैं (यह उपयोगी है यदि पहली पंक्ति और अंतिम पंक्ति दोनों छोटी हों)।

आप C-x r kआयत को मारने के लिए उपयोग कर सकते हैं , जो आपको C-x r yबाद में यैंक ( ) करने की अनुमति देता है ( उस स्थान के ऊपरी बाएं कोने में ले जाएं जहां आप इसे सम्मिलित करना चाहते हैं)।

आप खाली स्ट्रिंग का भी उपयोग C-x r t( string-rectangle) कर सकते हैं और प्रवेश कर सकते हैं ।

आयत कमांड स्तंभ के पदों पर आधारित हैं। यदि आप n स्तंभों के बजाय n वर्णों को हटाना चाहते हैं (जो कि बहु-स्तंभ वर्णों जैसे टैब के साथ अंतर करता है), तो आप नियमित अभिव्यक्ति प्रतिस्थापन का उपयोग कर सकते हैं : ^.\{42\}प्रत्येक पंक्ति के पहले 42 वर्णों को हटाने के लिए कुछ भी नहीं द्वारा प्रतिस्थापित करें ।


3
सभी आयत आदेशों को याद रखने की कोशिश करने के बजाय, आप C-spc के बजाय Cx spc का उपयोग कर सकते हैं, जो आपके क्षेत्र को एक आयत में बदल देता है और सब कुछ बस काम करता है।
मालाबार

1
@ मालाबार 24 के बाद से ही एमएसीएस है। (यह 23 Emacs के साथ एक मशीन पर लिख रहे हैं। वे अभी भी बहुत आस-पास हैं।)
गाइल्स का SO- बुराई पर रोक '

2
मेरी संवेदना ... :-(
मालाबार

यह सिर्फ मेरे लिए GNU Emacs 23.4.1 (x86_64-pc-linux-gnu, GTK + संस्करण 2.24.21) 2013-10-25 पर allspice पर, डेबियन द्वारा संशोधित
davidrmelsles

4

एक और संभावना: मैं वास्तव में इस तरह के कार्यों के लिए कई कर्सर का उपयोग करना पसंद करता हूं। package.elMELPA के माध्यम से उपलब्ध है , यह मेरे 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


3

यदि आपने cua-modeसक्षम किया है, तो:

  • C-a लाइन की शुरुआत करने के लिए,
  • C-RET आयत शुरू करने के लिए,
  • फिर एरो कीज़ या किसी भी ईमैक मूव कमांड की तरह मूव करें C-f
  • DEL चयन हटाने के लिए

मैं cua-modeकाम करने के तरीके को पसंद करता हूं , एमएसीएस मानक आयत की तुलना में जहां समकक्ष होगा:

  • C-a लाइन की शुरुआत करने के लिए,
  • C-SPC आयत शुरू करने के लिए,
  • फिर एरो कीज़ या किसी भी ईमैक मूव कमांड की तरह मूव करें C-f
  • C-x r d चयन हटाने के लिए

cua-modeमानक Emacs आयत की तुलना में तीन कुंजी दबाव बचाता है।


3

पूर्णता के लिए: प्रत्येक 3 पंक्ति से पहले 3 अक्षर हटाना (औपचारिक रूप से: बिंदु से, या क्षेत्र में) एक रिक्त स्ट्रिंग के साथ regexp-replacing ^...(या अधिक सामान्यतः :) द्वारा किया जा सकता है ^.\{3\}

स्पष्टीकरण: regexen में, ^इसका मतलब है "लाइन की शुरुआत", .इसका मतलब है "किसी भी चरित्र", और \{n\}इसका मतलब है " एन से पहले बात की पुनरावृत्ति"।

यह इंटरएक्टिव होने का एक अतिरिक्त लाभ है (जब तक कि कोई प्रेस नहीं करता है !, जो query-regexp-replaceआगे से बिना किसी प्रश्न के सब कुछ बदल देता है )।


1
क्यों घटता है?
mbork

0

और एक और संभावना:

F3C-aC-3C-dC-nF4

एक कीबोर्ड मैक्रो को रिकॉर्ड करता है, जो मूल रूप से "लाइन की शुरुआत में ले जाता है, तीन वर्णों को हटाता है, और अगली पंक्ति में जाता है"। फिर, आप इसे बफर के अंत तक रीप्ले कर सकते हैं C-uF4, या C-xC-krइसे क्षेत्र में लाइनों पर लागू कर सकते हैं। इसका एक नुकसान है: यह तब टूटेगा जब किसी भी रेखा में 3 से कम वर्ण हों।


-1

यदि यह केवल एक पंक्ति है जो आप Mz के साथ जाप-टू-चार कर सकते हैं, यह मानते हुए कि चरित्र उस बिंदु और जिसे आप हटाना चाहते हैं, के बीच दोहराया नहीं जाता है। कुछ मामलों के लिए यह एक क्षेत्र बनाने की तुलना में तेज़ है।

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