रिंग मारने के लिए जोड़ने के बिना बैकस्पेस


12

Crtl + Backspace या Ctrl + Del का उपयोग करके हटाए गए पाठ को किल रिंग में जोड़ा जाता है।
मेरे द्वारा इसे होने से कैसे रोका जा सकता है? डिलीट होने पर मुझे हर एक टेक्स्ट को किल रिंग में भेजना होगा।

साइड सवाल: वैसे भी इस डिफ़ॉल्ट सेटिंग का उद्देश्य क्या है? :)


साइड क्वेश्चन के बारे में: संभवत: आपके पास से गुजरे बिना जो भी डिलीट होता है, उसकी बैकअप कॉपी हो undo। जंगली अनुमान, हालांकि।
मैनुअल उबरती

जवाबों:


7

प्रलेखन के अनुसार:

<C-delete>कमांड किल-वर्ड (वैश्विक-मानचित्र में पाया गया) चलाता है, जो एक संकलित संकलित लिस्प फ़ंक्शन है ‘simple.el’

यह करने के लिए बाध्य है <C-delete>, M-d

(किल-वर्ड एआरजी)

किसी शब्द के अंत का सामना करने तक पात्रों को आगे बढ़ाएं। तर्क एआरजी के साथ, ऐसा कई बार करें।

अब, स्रोत कोड ब्राउज़ करें:

(defun kill-word (arg)                                                                                                     
  "Kill characters forward until encountering the end of a word.                                                           
With argument ARG, do this that many times."
  (interactive "p")
  (kill-region (point) (progn (forward-word arg) (point))))

फिर, kill-regionहम जो फ़ंक्शन पाते हैं , उसके लिए दस्तावेज़ के अंदर :

मारना ("कट") बिंदु और चिह्न के बीच का पाठ।
This deletes the text from the buffer and saves it in the kill ring। कमांड [yank] इसे वहां से पुनः प्राप्त कर सकता है। (यदि आप इसे मारे बिना क्षेत्र को बचाना चाहते हैं, तो [किल-रिंग-सेव] का उपयोग करें।)

[...]

लिस्प कार्यक्रमों को पाठ को मारने के लिए इस फ़ंक्शन का उपयोग करना चाहिए। (पाठ को हटाने के लिए, उपयोग करें delete-region।)

अब, यदि आप आगे जाना चाहते हैं, तो यह कुछ फ़ंक्शन है जिसका उपयोग आप किल-रिंग की नकल के बिना हटाने के लिए कर सकते हैं:

(defun my-delete-word (arg)
  "Delete characters forward until encountering the end of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
  (interactive "p")
  (delete-region
   (point)
   (progn
     (forward-word arg)
     (point))))

(defun my-backward-delete-word (arg)
  "Delete characters backward until encountering the beginning of a word.
With argument, do this that many times.
This command does not push text to `kill-ring'."
  (interactive "p")
  (my-delete-word (- arg)))

(defun my-delete-line ()
  "Delete text from current position to end of line char.
This command does not push text to `kill-ring'."
  (interactive)
  (delete-region
   (point)
   (progn (end-of-line 1) (point)))
  (delete-char 1))

(defun my-delete-line-backward ()
  "Delete text between the beginning of the line to the cursor position.
This command does not push text to `kill-ring'."
  (interactive)
  (let (p1 p2)
    (setq p1 (point))
    (beginning-of-line 1)
    (setq p2 (point))
    (delete-region p1 p2)))

; bind them to emacs's default shortcut keys:
(global-set-key (kbd "C-S-k") 'my-delete-line-backward) ; Ctrl+Shift+k
(global-set-key (kbd "C-k") 'my-delete-line)
(global-set-key (kbd "M-d") 'my-delete-word)
(global-set-key (kbd "<M-backspace>") 'my-backward-delete-word)

ErgoEmacs के सौजन्य से


धन्यवाद, जो इसे हल किया। पक्ष प्रश्न के बारे में क्या? : पी
डैनियल Hitzel

3
@DanielHitzel क्षमा करें, मेरे पास इस प्रश्न का उत्तर नहीं है :)
न्सुक्कामी _

इसलिए मैं अकेला नहीं हूं: D
डैनियल Hitzel

4

24 Emacs के बाद से, बिना किसी कॉन्फ़िगरेशन के, आप इसे मारकर रिंग में जोड़कर किसी भी टेक्स्ट को डिलीट कर सकते हैं और फिर उसे दबाकर Backspaceया दबाकर Delete। जब चिह्न सक्रिय होता है, तो ये कुंजियाँ कर्सर के पहले / बाद में चरित्र को हटाने के बजाय इस क्षेत्र को हटा देती हैं।

यही है, उस टेक्स्ट के एक छोर पर जाएँ जिसे आप हटाना चाहते हैं, Ctrl+ दबाएँ Space, दूसरे सिरे पर जाएँ, और हाइलाइट किए गए क्षेत्र को दबाएँ Backspace(या Delete) दबाएँ । या एक छोर पर जाएं, Shiftदूसरे छोर पर जाने के लिए आंदोलन कीज का उपयोग करते समय पकड़ें और दबाएं Backspace


खैर, यह MacOS में 25.1 Emacs के साथ मेरे लिए नहीं है।
एनवीगेटन

0

मेरे पास एक ही समस्या थी और इसे इस तरह से आसानी से हल किया:

(global-set-key (kbd "<backspace>")
          '(lambda () (interactive) (backward-delete-char-untabify 1 nil)))

कॉलिंग (backward-delete-char-untabify 1 nil)Emacs को बैक-डिलीट करने के लिए एक char (जो कि 1पैरामीटर है) को बताता है और यह कि यह रिंग में कॉपी करने से मना कर देता है (यही nilपैरामीटर है)। आपको एक लैम्ब्डा (यानी अनाम) फ़ंक्शन की आवश्यकता है क्योंकि आप फ़ंक्शन को एक कुंजी के साथ बांध रहे हैं।

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