Entspricht der Befehl "emacs" dem Befehl "VIMs ci"? Grundsätzlich möchte ich den Text in Anführungszeichen setzen.
In vim kann ich ci) oder ci] oder ci} "inner * ändern" ...
Aus dem Kopf heraus ist der nächste Befehl, M-z "
der alles vom Punkt bis zum nächsten Auftreten des "Zeichens löscht.
Es gibt auch den C-M-k
Begriff "ausgewogener Ausdruck töten", der eine vollständig in Klammern gesetzte Anweisung oder eine Zeichenfolge in doppelten Anführungszeichen usw. löscht, basierend auf der aktuellen Modusdefinition von "ausgewogener Ausdruck" und dem Zeichen, das gerade unter dem Punkt steht (dh, es funktioniert nur, wenn der Cursor steht) steht an der öffnung '"' oder '(' etc.).
Ähnlich wie bei Justins Vorschlag gibt CM-SPACE Ihnen "mark-sexp", das den Abgleich von Paren, Zitat usw. auswählt, und dann können Sie Cw oder was auch immer zum Verschwinden bringen. Falls Sie SEHEN möchten, was Sie löschen möchten, bevor Sie es löschen ...
Ja! Das Äquivalent zu VIMs ci "Befehl in Emacs ist ... ci" :-)
http://www.emacswiki.org/emacs-de/Vimpulse
Bin gerade auf diese Frage gestoßen; Hier ist eine benutzerdefinierte Lösung, die für mich funktioniert hat:
(defun seek-backward-to-char (chr)
"Seek backwards to a character"
(interactive "cSeek back to char: ")
(while (not (= (char-after) chr))
(forward-char -1)))
(defun delete-between-pair (char)
"Delete in between the given pair"
(interactive "cDelete between char: ")
(seek-backward-to-char char)
(forward-char 1)
(zap-to-char 1 char)
(insert char)
(forward-char -1))
Binden Sie anschließend Delete-Between-Pair an einen beliebigen Schlüssel. Für mich habe ich es an Cz i gebunden.
Ich fürchte, ich kenne die Ci-Funktion von VIM nicht, aber haben Sie sich Emacs regexp replace angesehen? Ich kann nicht mit der genauen Semantik sprechen oder sagen, wie einfach es im Vergleich ist, aber es ist das, was ich für das verwenden würde, was ich denke, dass Sie wollen.
Ich habe einen Nebenmodus erstellt, der einige dieser Vim-Funktionen namens Markit enthält .
quelle
Magnars (Autor der EmacsRocks-Site) hat dieses Plugin geschrieben, um genau das zu tun, wonach Sie fragen.
https://github.com/magnars/change-inner.el
Natürlich können Sie auch den Evil-Modus verwenden.
quelle
Hier ist meine Version, die alles innerhalb (oder einschließlich) eines übereinstimmenden Zeichenpaares löscht. Die Zeichenpaare werden in einer Liste definiert, so dass die übereinstimmenden Start- / Endzeichen bekannt sind. Ich habe es "Cc i" für die Änderung in und "Cc a" für die Änderung aller zugeordnet.
Es kopiert auch die entfernten Zeichen in die Zwischenablage, um sie später einzufügen.
quelle
Dies war etwas, was ich bei Vim vermisst hatte und
zap-to-char
nicht richtig zu schneiden schien.Hier ist mein bescheidener Versuch, "ci" und "ca" neu zu erstellen:
Normalerweise ist der Bedingungsfall nicht erforderlich, da der dritte (optionale) Parameter von Suche vorwärts / Suche rückwärts angeben soll, was zu tun ist, wenn die Suche fehlschlägt. Aus irgendeinem Grund führt die Platzierung der zweiten Suche als dritter Parameter für die erste zu einem merkwürdigen Verhalten.
quelle
Ich habe die Lösungen hier ausprobiert, aber festgestellt, dass sie alle in irgendeiner Weise fehlten, und bin auf diese Idee gekommen. Es akzeptiert entweder einen Anfangs- oder einen Endbegrenzer und verwendet integrierte Emacs-Funktionen, um zu vermeiden, dass eine Übersetzungstabelle für Begrenzer benötigt wird.
quelle