Для контекста я являюсь чем-то вроде новичков emacs. Я не использовал его очень долго, но использовал его все больше и больше (мне это очень нравится). Также мне нравится lisp, но не супер знакомы с elisp.Как связать регулярное выражение с комбинацией клавиш в emacs?
Что мне нужно сделать, это связать регулярное выражение с комбинацией клавиш, потому что я часто использую это конкретное регулярное выражение.
Что я делал:
M-C-s ^.*Table\(\(.*\n\)*?GO\)
Примечание, я использовал строку выше, но я обнаружил, что для isearch-forward-regexp
, вам действительно нужно заменить \n
в регулярном выражении с результатом Cq Qj. Это вставляет литеральную новую строку (без завершения команды), позволяющую мне помещать новую строку в выражение и сопоставлять строки.
Как я могу привязать это к комбинации клавиш?
Я смутно понимаю, что мне нужно создать функцию elisp, которая исполняет isearch-forward-regexp
с выражением, но я неясен в деталях. Я искал google и нашел большую часть документации, немного запутанной.
Как связать регулярное выражение с комбинацией клавиш в emacs?
Майк Стоун был лучший ответ до сих пор - не точно то, что я искал, но он работал на то, что мне нужно было
Edit - это своего рода работала, но после хранения макрос, когда я вернулся, чтобы использовать его позже, я не мог использовать его с Cx e. (То есть, если я перезагрузки Emacs, а затем введите Mx макро-имя, а затем Сх е, я получаю сообщение в минибуфере как «не последний KBD макро» или что-то подобное)
@ Майк Стоун - Спасибо за информацию. Я попытался создать макрос так:
C-x(M-C-s ^.*Table\(\(.*C-q C-J\)*?GO\) C-x)
Это создало мой макрос, но когда я выполнил мой макрос я не получил ту же подсветку, что я обычно получаю, когда я использовать isearch-forward-regexp
. Вместо этого он просто подпрыгнул до конца следующего матча выражения. Так что это действительно не работает для того, что мне нужно. Есть идеи?
Редактировать: Похоже, я использую макросы, чтобы делать то, Я попробую то, что вы предложили.