Для контекста, я что-то вроде новичка в emacs. Я не использовал его очень давно, но использую его все больше и больше (мне он очень нравится). Также я хорошо разбираюсь в lisp, но не очень хорошо знаком с elisp.
Что мне нужно сделать, так это связать регулярное выражение с комбинацией клавиш, потому что я так часто использую это конкретное регулярное выражение.
Что я делал:
M-C-s ^.*Table\(\(.*\n\)*?GO\)
Обратите внимание, выше я использовал новую строку, но обнаружил, что для isearch-forward-regexp вам действительно нужно заменить \n в регулярном выражении результатом C-q Q-j. Это вставляет буквальную новую строку (без завершения команды), позволяя мне поместить новую строку в выражение и сопоставить строки.
Как я могу связать это с комбинацией клавиш?
Я смутно понимаю, что мне нужно создать функцию elisp, которая выполняет isearch-forward-regexp с выражением, но я не уверен в деталях. Я искал в Google и обнаружил, что большая часть документации немного запутана.
Как связать регулярное выражение с комбинацией клавиш в emacs?
У Майка Стоуна был лучший ответ на данный момент -- не точно то, что я искал, но это сработало для того, что мне было нужно
Редактировать - это работало, но после сохранения макроса, когда я вернулся к нему позже, я не мог использовать его с C-x e. (то есть, если я перезагружаю emacs, а затем набираю Mx имя-макроса, а затем Cx e, я получаю сообщение в минибуфере типа "нет последнего макроса kbd" или что-то в этом роде. похожий)
@Mike Stone - Спасибо за информацию. Я попытался создать макрос следующим образом:
C-x( M-C-s ^.*Table\(\(.*C-q C-J\)*?GO\) C-x)
Это создало мой макрос, но когда я выполнил свой макрос, я не получил того же выделения, которое я обычно получаю, когда использую isearch-forward-regexp. Вместо этого он просто перешел к концу следующего совпадения выражения. Так что это действительно не работает для того, что мне нужно. Любые идеи?
Изменить: похоже, что я могу использовать макросы, чтобы делать то, что хочу, мне просто нужно мыслить нестандартно isearch-forward-regexp. Я попробую то, что вы предложили.