ফাঁকা লাইন উপেক্ষা করা
এর delete-duplicate-lines
মাধ্যমে কল করে ফাঁকা লাইন উপেক্ষা করতে বলতে পারেন
C-u C-u C-u M-x delete-duplicate-lines
RET
আপনি C-uযখন কল করার সময় সেই বারটিকে আঘাত করতে না চান delete-duplicate-lines
, আপনি এটি একটি কাস্টম কমান্ডে আবদ্ধ করতে পারেন এবং সেই আদেশটি আপনার পছন্দের মূল অনুক্রমের সাথে আবদ্ধ করতে পারেন:
(defun delete-duplicate-lines-keep-blanks ()
(interactive)
(delete-duplicate-lines (region-beginning) (region-end) nil nil t))
(global-set-key (kbd "C-c d") 'delete-duplicate-lines-keep-blanks)
রেজিপক্সের সাথে মিলিত লাইনগুলি উপেক্ষা করা হচ্ছে
আপনার প্রশ্নের দ্বিতীয় অংশ হিসাবে, আমি মনে করি না আপনি বিল্ট-ইন সংস্করণ ব্যবহার করে যা চান তা অর্জন করতে পারবেন delete-duplicate-lines
। তবে আপনি কমান্ডের একটি পরিবর্তিত সংস্করণ ব্যবহার করতে পারেন (এটি ডিফল্টরূপে ফাঁকা রেখাও রাখে):
(defun delete-duplicate-lines
(beg end keep &optional reverse adjacent keep-blanks interactive)
(interactive
(progn
(barf-if-buffer-read-only)
(list (region-beginning) (region-end)
(read-string "Keep lines matching regexp: ") ; Prompt for regexp to keep
(equal current-prefix-arg '(4))
(equal current-prefix-arg '(16))
t ; Keep blanks by default
t)))
(let ((lines (unless adjacent (make-hash-table :test 'equal)))
line prev-line
(count 0)
(beg (copy-marker beg))
(end (copy-marker end)))
(save-excursion
(goto-char (if reverse end beg))
(if (and reverse (bolp)) (forward-char -1))
(while (if reverse
(and (> (point) beg) (not (bobp)))
(and (< (point) end) (not (eobp))))
(setq line (buffer-substring-no-properties
(line-beginning-position) (line-end-position)))
(if (or (and keep-blanks (string= "" line))
(string-match keep line)) ; Ignore line if it
; matches regexp to keep
(forward-line 1)
(if (if adjacent (equal line prev-line) (gethash line lines))
(progn
(delete-region (progn (forward-line 0) (point))
(progn (forward-line 1) (point)))
(if reverse (forward-line -1))
(setq count (1+ count)))
(if adjacent (setq prev-line line) (puthash line t lines))
(forward-line (if reverse -1 1))))))
(set-marker beg nil)
(set-marker end nil)
(when interactive
(message "Deleted %d %sduplicate line%s%s"
count
(if adjacent "adjacent " "")
(if (= count 1) "" "s")
(if reverse " backward" "")))
count))
এই সংস্করণটি delete-duplicate-lines
আপনাকে একটি রেজিএক্সএক্সের জন্য অনুরোধ করবে এবং রেজিপ্লেক্সের সাথে মেলে এমন সমস্ত লাইন রাখবে। উদাহরণস্বরূপ, আপনি যে শব্দটি Resume
করবেন তা নিয়ে সমস্ত লাইন রাখার জন্য :
M-x delete-duplicate-lines
RET ^Resume$
RET