Ich habe oft eine Situation, in der ich Text in einer Region anwenden muss. Für HTML und einfache Fälle gibt es dafür bereits Bibliotheken. Aber was ist mit dem allgemeinen Fall? Ich möchte gefragt werden, was ich Anfang und Ende der Region einfügen werde.
elisp
text-editing
nperson325681
quelle
quelle
<?php
...?>
und dann, wenn Sie eine Region und einen Typ<?php
(oder eine Tastenkombination) auswählen , diese in das Paar einschließen. Aber afaik gibt es keine einfache Möglichkeit, diese Bibliotheken zu verwenden, wenn Sie viele One-Shot-Paare haben.Antworten:
Ich habe gegoogelt und diesen Beitrag von John D. Cook gefunden . Er zeigt, wie man eine einfache interaktive Funktion erstellt, um HTML / XML-Tags einfach in der Region abzurufen. Daraus habe ich die Funktion geändert, um zweimal zu fragen.
Noch wichtiger ist, dass diese Funktion auch als Hilfswerkzeug verwendet werden kann, beispielsweise wenn Sie Schlüssel binden möchten, um bestimmte Textteile zuzuordnen.
quelle
evil
dass ich das hier störe. Vielleicht hat eine Funktion des Typsinteractive "r"
robuster funktioniert ?Ich würde einen anderen Ansatz vorschlagen. Wenn es eine Region gibt,
point
muss sie sich per Definition am Anfang (oder Ende) der Region befinden undmark
befindet sich am Ende (oder am Anfang). Das heißt, Sie können den gewünschten Text an einer bestimmten Stelle eingeben und dann mitexchange-point-and-mark
, dhC-x C-x
zum anderen Ende der Region springen. Geben Sie die zweite Hälfte Ihres Wrappers ein und Sie sind fertig.Sie werden nicht explizit nach dem Einfügetext gefragt, aber ich kann mir nicht vorstellen, dass es eine Möglichkeit gibt, dasselbe mit weniger Aufwand zu erreichen.
quelle
multiple-cursors
optimiert werden könnte, um Text am Anfang und Ende des aktiven Bereichs gleichzeitig einzufügen.C-x C-x
. Mit Ihrer Antwort müssen Sie Ihre Funktion (C-c something
) aufrufen undreturn
nach jedem Eintrag drücken. Egal was Sie tun, Sie haben zwei weitere Tastenanschläge. Das heißt, es hilft nicht, wenn Sie etwas von elisp anrufen möchten.Nur aus Gründen der Abwechslung:
Eine andere Möglichkeit, dies mit einem beliebigen Start- und Endtext zu tun, besteht darin, ihn
replace-regexp
für die Region zu verwenden: Abgleichen.+
und Ersetzen durchbefore \& after
oder den Text, den Sie fürbefore
und verwenden möchtenafter
.Sie könnten einen Befehl dazu schreiben, aber ich denke an einen Fall, in dem Sie in einer bestimmten Datei denselben Start- / Endtext an mehreren Stellen anwenden möchten. Sie können ein Makro aufzeichnen oder einfach den Minibuffer-Verlauf verwenden, um ihn in einer anderen Region zu wiederholen.
Wenn der Text, den Sie umbrechen möchten, als regulärer Ausdruck ausgedrückt werden kann, müssen Sie natürlich nicht einmal eine Region auswählen und können einen
query-replace-regexp
Puffer erstellen , aber vermutlich ist der Text, den Sie umbrechen möchten, nicht so konsistent.quelle