উত্তর:
আমার মাথার শীর্ষে, নিকটতম কমান্ডটি M-z "
যা "চরিত্রের পরবর্তী উপস্থিতি পর্যন্ত সবকিছু মুছে ফেলে।
এছাড়াও আছে C-M-k
, "ব্যালান্সড এক্সপ্রেশন কিল", যা "ভারসাম্যযুক্ত অভিব্যক্তি" এর বর্তমান মোড সংজ্ঞা এবং বর্তমানে পয়েন্টের অধীনে থাকা অক্ষরের উপর ভিত্তি করে একটি সম্পূর্ণ প্যারেনসাইজড স্টেটমেন্ট বা ডাবল কোটযুক্ত স্ট্রিং ইত্যাদি মুছে ফেলবে (যেমন, এটি কেবলমাত্র কার্সার হলে কাজ করে) খোলার '' 'বা' ('ইত্যাদি) এ রয়েছে।
একইভাবে জাস্টিনের পরামর্শ অনুসারে সিএম-স্পেস আপনাকে "মার্ক-সেক্সপ" দেয় যা ব্যালেন্সিং পেরেন, উক্তি ইত্যাদি নির্বাচন করবে এবং তারপরে আপনি সিডব্লিউ করতে পারেন বা যা কিছু করতে হবে তা দূরে সরিয়ে দিতে পারেন। আপনি মুছে ফেলার আগে আপনি কী মুছবেন তা আপনি দেখতে চান ...
হ্যাঁ! "ইমাসে ভিআইএমএস সিআই এর সমতুল্য হ'ল ... সিআই" :-)
http://www.emacswiki.org/emacs-de/Vimpulse
এই প্রশ্নে কেবল হোঁচট খেয়েছে; এখানে একটি কাস্টম সমাধান যা আমার জন্য কাজ করেছে:
(defun seek-backward-to-char (chr)
"Seek backwards to a character"
(interactive "cSeek back to char: ")
(while (not (= (char-after) chr))
(forward-char -1)))
(defun delete-between-pair (char)
"Delete in between the given pair"
(interactive "cDelete between char: ")
(seek-backward-to-char char)
(forward-char 1)
(zap-to-char 1 char)
(insert char)
(forward-char -1))
তারপরে মুছুন-মাঝখানের-জোড়াকে আপনার পছন্দ মতো কী-তে আবদ্ধ করুন। আমার জন্য, আমি এটি Cz উপর আবদ্ধ।
আমি ভীত আমি ভিআইএম এর সিআই বৈশিষ্ট্য সম্পর্কে জানি না, তবে আপনি কি ইমাসের রেজিপ্স্প প্রতিস্থাপনের দিকে তাকিয়েছেন? তুলনায় তুলনামূলকভাবে সঠিক শব্দার্থবিজ্ঞানের সাথে ব্যবহার করা বা এটি ব্যবহার করা কত সহজ তা আমি বলতে পারি না, তবে আমি যা চাই তা আপনি যা চান তার জন্য আমি এটি ব্যবহার করব।
ম্যাগনারস (ইমাসক্রকস সাইটের লেখক) আপনি যা যা বলছেন ঠিক তা করতে এই প্লাগইনটি লিখেছিল।
https://github.com/magnars/change-inner.el
স্পষ্টতই, আপনি এভিল মোডও ব্যবহার করতে পারেন।
আমার সংস্করণটি এখানে যা অক্ষরের সাথে মিলে যাওয়া (বা অন্তর্ভুক্ত) সমস্ত কিছু মুছে ফেলবে। অক্ষর জোড়া একটি তালিকায় সংজ্ঞায়িত করা হয় যাতে মিলের শুরু / শেষের অক্ষরটি পরিচিত হয়। আমি এটিকে পরিবর্তনের জন্য "সিসি আই" এবং সমস্ত পরিবর্তনের জন্য "সিসি এ" ম্যাপ করেছি।
এটি মুছে ফেলা অক্ষরগুলি পরে আটকানোর জন্য ক্লিপ বোর্ডে অনুলিপি করে।
; Re-create ci" ca"...
(defun seek-backward-to-char (chr)
"Seek backwards to a character"
(interactive "cSeek back to char: ")
(while (not (= (char-after) chr))
(forward-char -1)))
(setq char-pairs
'(( ?\" . ?\" )
( ?\' . ?\' )
( ?\( . ?\) )
( ?\[ . ?\] )
( ?\{ . ?\} )
( ?< . ?> )))
(defun get-char-pair (chr)
(let ((result ()))
(dolist (x char-pairs)
(setq start (car x))
(setq end (cdr x))
(when (or (= chr start) (= chr end))
(setq result x)))
result))
(defun get-start-char (chr)
(car (get-char-pair chr)))
(defun get-end-char (chr)
(cdr (get-char-pair chr)))
(defun seek-to-matching-char (start end count)
(while (> count 0)
(if (= (following-char) end)
(setq count (- count 1))
(if (= (following-char) start)
(setq count (+ count 1))))
(forward-char 1)))
(defun seek-backward-to-matching-char (start end count)
(if (= (following-char) end)
(forward-char -1))
(while (> count 0)
(if (= (following-char) start)
(setq count (- count 1))
(if (= (following-char) end)
(setq count (+ count 1))))
(if (> count 0)
(forward-char -1))))
(defun delete-between-pair (char)
"Delete in between the given pair"
(interactive "cDelete between char: ")
(seek-backward-to-matching-char (get-start-char char) (get-end-char char) 1)
(forward-char 1)
(setq mark (point))
(seek-to-matching-char (get-start-char char) (get-end-char char) 1)
(forward-char -1)
(kill-region mark (point)))
(defun delete-all-pair (char)
"Delete in between the given pair and the characters"
(interactive "cDelete all char: ")
(seek-backward-to-matching-char (get-start-char char) (get-end-char char) 1)
(setq mark (point))
(forward-char 1)
(seek-to-matching-char (get-start-char char) (get-end-char char) 1)
(kill-region mark (point)))
(global-set-key (kbd "C-c i") 'delete-between-pair)
(global-set-key (kbd "C-c a") 'delete-all-pair)
এটি এমন কিছু যা আমি ভিম থেকে হারিয়ে যাচ্ছিলাম এবং zap-to-char
এটি ঠিক কাটেনি বলে মনে হচ্ছে।
"সিআই" এবং "সিএ" পুনরায় তৈরি করার জন্য আমার নম্র প্রচেষ্টাটি এখানে:
(defun change-outer (str)
(interactive "sChange outer: ")
(condition-case nil
(search-backward str (line-beginning-position))
(error (search-forward str (line-end-position))
(forward-char -1)))
(kill-sexp)
)
(defun change-inner (str)
(interactive "sChange inner: ")
(condition-case nil
(search-backward str (line-beginning-position))
(error (search-forward str (line-end-position))
(forward-char -1)))
(push-mark)
(forward-sexp)
(forward-char -1)
(exchange-point-and-mark)
(forward-char 1)
(kill-region (point) (mark))
)
সাধারণত, শর্ত-কেসটি প্রয়োজনীয় নয়, যেহেতু অনুসন্ধান-ব্যর্থ / অনুসন্ধান-পশ্চাদপসরণের তৃতীয় (alচ্ছিক) পরামিতিটি অনুসন্ধান ব্যর্থ হওয়ার ক্ষেত্রে কী করা উচিত তা নির্দেশ করে। তবে কোনও কারণে, দ্বিতীয়টির অনুসন্ধানের জন্য প্রথমটির তৃতীয় প্যারামিটার হিসাবে স্থাপন করা অদ্ভুত আচরণের ফলাফল দেয়।
আমি এখানে সমাধানগুলি চেষ্টা করে দেখেছি, তবে তাদের প্রত্যেকেই কোনও না কোনওভাবে চাইছেন, তাই আমি এটি নিয়ে এসেছি। এটি হয় একটি শুরু বা শেষ ডিলিমিটার গ্রহণ করে এবং ডিলিমিটরদের জন্য অনুবাদ সারণির প্রয়োজন এড়াতে অন্তর্নির্মিত ইম্যাকস ফাংশন ব্যবহার করে।
(defun change-inner (prefix character)
"Kill region inside delimiters, using either beginning or
ending delimiter. With prefix arg, kill including delimiters."
(interactive "p\nc")
(let ((initial-point (point))
(start)
(end)
(move-point-by (if (> prefix 1) 0 1)))
(condition-case nil
(progn
;; Search forward for given char
(search-forward (char-to-string character))
(setq end (- (point) move-point-by))
(condition-case nil
(backward-sexp)
(error (backward-list)))
(setq start (+ (point) move-point-by))
(kill-region start end)
(or prefix (forward-char)))
(error (progn
;; Reset and search backward for given char
(goto-char initial-point)
(search-backward (char-to-string character))
(setq start (+ (point) move-point-by))
(condition-case nil
(forward-list)
(error (forward-sexp))))
(setq end (- (point) move-point-by))
(kill-region start end)
(or prefix (backward-char))))))
(global-set-key (kbd "M-i") 'change-inner)
(defun change-outer ()
(interactive)
(let ((current-prefix-arg '(4)))
(call-interactively 'change-inner)))
(global-set-key (kbd "M-o") 'change-outer)