Как сделать инвертированный выбор в emacs?

В настоящее время у меня выделена область текста. Я хочу убить/выдернуть (или отформатировать любым другим способом) весь буфер, кроме выделенной области. Есть ли способ инвертировать выделение в emacs и добиться того же?
Буду признателен за любую помощь. Спасибо.


person Avijit Gupta    schedule 11.03.2015    source источник


Ответы (2)


  1. C-w kill-region текст в середине.
  2. C-x h mark-whole-buffer остальной текст.
  3. делай свое дело.
  4. C-y yank средний текст.
person abo-abo    schedule 11.03.2015
comment
Но как только остальная часть текста будет уничтожена, например, не повлияет ли это на kill ring? Тогда шаг 4 может не дать желаемого результата. - person Avijit Gupta; 11.03.2015
comment
Тогда просто используйте M-y. Это кольцо может вместить гораздо больше, чем одно убийство. - person abo-abo; 11.03.2015

Несмежные регионы не могут существовать. Однако это ставит противоположную команду на C-c DEL.

(global-set-key "\^C\^?"        ; help edit mail files, etc.
        (defun erase-buffer-except-region (beg end)
          "Erase the buffer except for the region."
          (interactive "r")
          (when (< end beg)
            (cl-rotatef beg end))
          (delete-region end (point-max))
          (delete-region (point-min) beg)))
person devon    schedule 12.11.2020
comment
Возможно, библиотека выделения должна позволить вам либо удалить, либо сохранить выделенные области, которые могут быть несмежными. - person devon; 14.11.2020