Für den Kontext bin ich so etwas wie ein Emacs-Neuling. Ich habe es nicht sehr lange benutzt, aber ich benutze es immer mehr (ich mag es sehr). Auch ich bin vertraut mit Lisp, aber nicht super vertraut mit elisp.Wie binde ich einen regulären Ausdruck an eine Tastenkombination in Emacs?
Was ich tun muss, ist ein regulärer Ausdruck an eine Tastaturkombination zu binden, weil ich diese bestimmte Regex so oft verwende.
Was ich getan habe:
M-C-s ^.*Table\(\(.*\n\)*?GO\)
Hinweis, benutzen ich Newline oben, aber ich habe festgestellt, dass für isearch-forward-regexp
, Sie wirklich brauchen, um die \n
im regulären Ausdruck mit dem Ergebnis der zu ersetzen Cq Qj. Dies fügt einen literalen Zeilenumbruch ein (ohne den Befehl zu beenden), wodurch es mir möglich ist, einen neuen Zeilenumbruch in den Ausdruck einzufügen und ihn über mehrere Zeilen hinweg anzupassen.
Wie kann ich dies an eine Tastenkombination binden?
Ich verstehe vage, dass ich eine elisp Funktion erstellen muss, die isearch-forward-regexp
mit dem Ausdruck ausführt, aber ich bin verschwommen auf die Details. Ich habe google gesucht und die meisten Dokumente als etwas verwirrend empfunden.
Wie kann ich einen regulären Ausdruck an eine Tastenkombination in Emacs binden?
Mike Stone hatte die beste Antwort so weit - nicht genau, was ich suchte, aber es funktionierte für das, was ich brauchte
Bearbeiten - diese Art gearbeitet, aber nach dem Speichern das Makro, als ich es später wieder benutzte, konnte ich es nicht mit Cx e verwenden. (Dh, wenn ich Emacs neu starten und geben Sie dann Mx Makroname und dann Cx e, erhalte ich eine Nachricht in der Minipuffer wie ‚keine letzte kbd Makro‘ oder etwas ähnliches)
@ Mike Stone - Danke für die Information. Ich habe versucht, ein Makro wie so erstellen:
C-x(M-C-s ^.*Table\(\(.*C-q C-J\)*?GO\) C-x)
Das ist mein Makro erstellt, aber wenn ich mein Makro ausgeführt Ich habe nicht die gleiche Markierung erhalten, die ich normalerweise, wenn ich isearch-forward-regexp
verwenden. Stattdessen sprang es einfach auf das Ende der nächsten Übereinstimmung des Ausdrucks. Das funktioniert nicht wirklich für das, was ich brauche. Irgendwelche Ideen?
Edit: Es sieht aus wie ich kann Makros zu tun, was ich will, ich muss nur außerhalb der Box von isearch-forward-regexp
denken. Ich werde versuchen, was du vorgeschlagen hast.