मार डाला अंगूठी को मारने के लिए आयत की प्रतिलिपि कैसे करें


11

मैं अक्सर एक बफर से पाठ की एक आयत निकालता हूं, लेकिन फिर मुझे लगता है कि मैं पाठ को ऐसे करना चाहता हूं जैसे कि यह कोई आयत नहीं था। क्या मारने की अंगूठी में वर्तमान मारे गए आयत को जोड़ने का एक तरीका है?

जीएनयू Emacs मैनुअल इस कहना है:

"हत्या" एक आयत सामान्य अर्थों में हत्या नहीं है; आयत को मारने की अंगूठी में संग्रहीत नहीं किया जाता है, लेकिन एक विशेष स्थान पर जो केवल हाल ही में मारे गए आयत को रिकॉर्ड करता है। ऐसा इसलिए है क्योंकि एक आयत को yanking रैखिक पाठ से अलग है ताकि विभिन्न yank कमांड का उपयोग किया जा सके। आयतों के लिए यान-पॉपिंग को परिभाषित नहीं किया गया है।

हालांकि, मुझे मूल रूप से वह व्यवहार मिल सकता है जो मैं चाहता हूं

  • M-> बफर के अंत में जाओ
  • C-x r y यान आयत
  • C-x C-x विनिमय बिंदु और निशान (नई-नवेली लाइनों का चयन करता है)
  • C-w किल रिंग के लिए चयन को मार डालो

क्या एक मारे गए आयत को किल-रिंग प्रविष्टि में बदलने का एक बेहतर तरीका है?


जुड़ा हुआ समाधान वह नहीं है जो आपने मांगा था, लेकिन यह आप की तरह आयतों को चाहता है: emacs.stackexchange.com/a/46352/15749
jue

जवाबों:


6

अगर मैं आपके सवाल को समझ गया, तो आप कुछ इस तरह देख रहे हैं:

(defun youngfrog/copy-rectangle-to-kill-ring (start end)
  "Saves a rectangle to the normal kill ring. Not suitable for yank-rectangle."
  (interactive "r")
  (let ((lines (extract-rectangle start end)))
    (with-temp-buffer
      (while lines ;; insert-rectangle, but without the unneeded stuff
        ;; (most importantly no push-mark)
        (insert-for-yank (car lines))
        (insert "\n")
        (setq lines (cdr lines)))
      (kill-ring-save (point-min) (point-max)))))

ErgoEmacs के सौजन्य से


3

यह निश्चित नहीं है कि किल-रिंग में आयत होने के बारे में क्या खास है, लेकिन अगर आप Emacs-24.4 में अपग्रेड करते हैं, तो आप कर सकते हैं: C-x SPC .... M-wआयत का चयन करें और इसे किल-रिंग पर रखें। उसके बाद उस C-yआयत को (उसी में C-x r y, थू को) यैंक करेंगे ।


किल रिंग के बारे में दो बातें हैं जो "विशेष" हैं। सबसे महत्वपूर्ण (मेरे लिए) वह तरीका है जो किल रिंग से आइटम यैंक किया जाता है। सीधे शब्दों में कहें तो, यैंक मौजूदा पाठ को दाईं ओर स्थानांतरित करने के बजाय नीचे शिफ्ट करता है। किल रिंग का उपयोग करने से मारे गए पाठ के इतिहास को बनाए रखने का साइड लाभ भी होता है। ऐसा लगता है कि 24.4 दूसरा लाभ प्रदान कर सकता है लेकिन पहला नहीं।
nispio

आह, वास्तव में, उस स्थिति में 24.4 का नया व्यवहार उस हिस्से को बेहतर बनाता है जिसके बारे में आप परवाह नहीं करते हैं।
स्टीफन

1

मैं शुरू में इस समस्या के एक अंतर्निहित समाधान की कमी से नाराज था, फिर एहसास हुआ कि एक अंतर्निहित समाधान था: मार-आयत।

कहो तुम्हारे पास जैसे पाठ है

AAA BBBBBBBBB
AAA BBB
AAA BBBBBBB

लेकिन पाठ का 'B' भाग कहीं और चाहते हैं, जैसे इन C और D लाइनों के बीच:

CCCCC
CCC
DDDD
DD

यदि आप B आयत ( C-x r M-w) को कॉपी करते हैं और फिर बिंदु को पहले 'D' पर रखते हैं, तो आयत को पीछे छोड़ें ( C-x r y), आप के साथ समाप्त होते हैं

CCCCC
CCC
BBBBBBBBBDDDD
BBB      DD
BBBBBBB  

जहाँ आप वास्तव में चाहते थे

CCCCC
CCC
BBBBBBBBB
BBB
BBBBBBB
DDDD
DD

'बी' की आयत की नकल करना और उन्हें नए स्थान पर पहुँचाना स्वाभाविक प्रतीत हो सकता है, लेकिन एक बेहतर उपाय यह है कि 'ए और' बी 'लाइनों को कॉपी करें और उन्हें' सी 'और' के बीच पूरी तरह से यैंक करें। D 'रेखाएँ।

फिर, वांछित परिणाम के साथ समाप्त करने के लिए 'ए और उपयोग kill-rectangle( C-x r k) युक्त आयत को चिह्नित करें ।

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