Emacs копировать с помощью регулярных выражений - PullRequest
6 голосов
/ 02 февраля 2010

У меня есть текстовый файл.Может ли Emacs выбрать текст на основе регулярных выражений и поместить его в список уничтожений, чтобы я мог скопировать его в другое место?Что-то вроде regex-kill-ring-save?

Ответы [ 3 ]

3 голосов
/ 02 февраля 2010

Вдохновленный уже приведенными комментариями (ответ Чарльза не работает так, как мне хотелось бы), я добавил новую функцию в карту режима isearch / isearch-regexp, которая помещает только соответствующую строку в список уничтожений (тогда как Предложение Чарльза убивает от текущей точки до конца соответствующей строки):

(defun hack-isearch-kill ()
   "Push current matching string into kill ring."
   (interactive)
   (kill-new (buffer-substring (point) isearch-other-end))
   (isearch-done))

(define-key isearch-mode-map (kbd "M-w") 'hack-isearch-kill)

Хорошая особенность подхода isearch / isearch-regexp (который вы можете включить с помощью C-s и C-M-s соответственно) заключается в том, что вы можете видеть, как растет строка поиска, и вы можете скопировать ее с помощью M-w, как только вы удовлетворены (и возвращаетесь туда, где вы были раньше с C-u C-Space).

Это работает для меня с Emacs 23.1. Не знаю, будет ли это работать во всех ситуациях. В любом случае, я надеюсь, что вы найдете это полезным:)

ОБНОВЛЕНИЕ: Проходя через emacswiki, на котором я наткнулся KillISearchMatch , который предлагает более или менее то же самое (плюс еще несколько советов ...).

Ура, Daniel

1 голос
/ 02 февраля 2010

Я не уверен, что такая функция уже есть, но что вы можете сделать с помощью макроса клавиатуры:

  1. Начать запись макроса kbd: C-x (
  2. Найдите свое регулярное выражение с search-forward-regexp
  3. Перейти к началу вашего матча (текст, который вы хотите убить) с помощью различных команд навигации emacs, например, search или backward-word и т. Д.
  4. Марка: C-spc
  5. Перейти к концу вашего матча
  6. Убить текст: C-w

Затем вы можете назвать макрос клавиатуры с помощью M-x name-last-kbd-macro, чтобы вы могли выполнять макрос с именем, а не с C-x e.

Если вы хотите сохранить макрос для будущих сессий, вы можете открыть ваш .emacs и вставить макрос в буфер с помощью M-x insert-kbd-macro. После этого вы можете привязать ключ к макросу так же, как вы привязываете ключи к обычным функциям Emacs, например, (global-set-key "\C-c m" 'funky-macro-macro).

Подробнее о макросах клавиатуры emacs

0 голосов
/ 22 августа 2011

Isearch + уже делает это. Опционально устанавливает область вокруг цели поиска. Вы можете использовать C-SPC в любое время во время Isearch для переключения этого режима

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...