Vi के समतुल्य emacs क्या है dd? मैं वर्तमान लाइन को हटाना चाहता हूं। कोशिश की CTRL+ kलेकिन यह केवल वर्तमान स्थिति से हटाता है ।
Vi के समतुल्य emacs क्या है dd? मैं वर्तमान लाइन को हटाना चाहता हूं। कोशिश की CTRL+ kलेकिन यह केवल वर्तमान स्थिति से हटाता है ।
जवाबों:
C-a # Go to beginning of line
C-k # Kill line from current point
वहाँ भी
C-S-backspace # Ctrl-Shift-Backspace
जो आह्वान करता है M-x kill-whole-line
।
यदि आप एक अलग वैश्विक कुंजी बाइंडिंग सेट करना चाहते हैं, तो आप इसे ~ / .emacs में डालेंगे:
(global-set-key "\C-cd" 'kill-whole-line) # Sets `C-c d` to `M-x kill-whole-line`
यदि आप कई सारी पंक्तियों को हटाना चाहते हैं, तो आप एक संख्या के साथ कमांड को उपसर्ग कर सकते हैं:
C-u 5 C-S-backspace # deletes 5 whole lines
M-5 C-S-backspace # deletes 5 whole lines
C-u C-S-backspace # delete 4 whole lines. C-u without a number defaults to 4
C-u -5 C-S-backspace # deletes previous 5 whole lines
M--5 C-S-backspace # deletes previous 5 whole lines
कभी-कभी मुझे C-x z
मददगार भी मिल जाता है:
C-S-backspace # delete 1 whole line
C-x z # repeat last command
z # repeat last command again.
# Press z as many times as you wish.
# Any other key acts normally, and ends the repeat command.
C-x z
, यह वास्तव में अच्छा है। और अच्छा और सटीक जवाब btw।
C-k C-k
जो थोड़े d$ S-j
vim में एक तरह काम करता है , लेकिन यह काफी अच्छी तरह से आगे लाइनों को हटा सकता है।
C-cd
?
मामले में आप लाइन को मारना नहीं चाहते हैं (जो इसे ओएस क्लिपबोर्ड में डाल देगा और रिंग को मार देगा) लेकिन बस इसे हटा दें:
(defun delete-current-line ()
"Delete (not kill) the current line."
(interactive)
(save-excursion
(delete-region
(progn (forward-visible-line 0) (point))
(progn (forward-visible-line 1) (point)))))
मारने की अंगूठी में रखने के बिना लाइन को हटाने का एक और तरीका:
(defun delete-current-line ()
"Deletes the current line"
(interactive)
(delete-region
(line-beginning-position)
(line-end-position)))
यह एक रिक्त रेखा की शुरुआत में बिंदु को छोड़ देगा। इस से भी छुटकारा पाने के लिए, आप (delete-blank-lines)
फ़ंक्शन के अंत में कुछ जोड़ना चाह सकते हैं , जैसा कि इस उदाहरण में है, जो शायद थोड़ा कम सहज है:
(defun delete-current-line ()
"Deletes the current line"
(interactive)
(forward-line 0)
(delete-char (- (line-end-position) (point)))
(delete-blank-lines))
किसी भी चीज़ को चुने बिना, लाइन पर किसी भी बिंदु से, एक पूर्ण लाइन को हटाने (मारने) का सबसे तेज़ / सरल तरीका है:
C-w ; kill-region
जो कुछ भी चुना गया है, उसे डिलीट करने में बहुमुखी है, या कुछ भी नहीं चुने जाने पर डिफ़ॉल्ट रूप से एक लाइन।
इस प्रश्न को देखते हुए, आप शायद विम के "यंक" की नकल करने में भी रुचि रखते हैं, yy
(हालांकि एमएसीएस पार्लेंस में "यंक" भ्रामक रूप से विम का "पुट" है p
)। ये है:
M-w ; kill-ring-save
अच्छा और बधाई, और याद रखने में बहुत आसान है। यहां तक कि विम के समान थोड़ा i_CTRL-W
।
एक बार जब आप उपरोक्त दोनों में से किसी एक को मार डालते हैं, तो आप इसे "यैंक" (पेस्ट) करना चाहेंगे:
M-y ; yank-pop
(ध्यान दें कि CS-backspace Emacs में काम नहीं कर सकती है।)
लाइन को हटाने के लिए अलग कुंजी होने के बजाय, या उपसर्ग-तर्क को लागू करने के लिए। आप क्रूक्स-स्मार्ट-किल-लाइन का उपयोग कर सकते हैं
जो " लाइन के अंत तक मार देगा और अगली कॉल पर पूरी लाइन को मार देगा"। लेकिन अगर आप delete
इसके बजाय पसंद करते हैं kill
, तो आप नीचे दिए गए कोड का उपयोग कर सकते हैं।
पॉइंट-टू-स्ट्रिंग ऑपरेशन (किल / डिलीट) के लिए मैं zop-to-char का उपयोग करने की सलाह देता हूं
(defun aza-delete-line ()
"Delete from current position to end of line without pushing to `kill-ring'."
(interactive)
(delete-region (point) (line-end-position)))
(defun aza-delete-whole-line ()
"Delete whole line without pushing to kill-ring."
(interactive)
(delete-region (line-beginning-position) (line-end-position)))
(defun crux-smart-delete-line ()
"Kill to the end of the line and kill whole line on the next call."
(interactive)
(let ((orig-point (point)))
(move-end-of-line 1)
(if (= orig-point (point))
(aza-delete-whole-line)
(goto-char orig-point)
(aza-delete-line))))