Angenommen, ich habe diese Codezeile:
$query = "SELECT * FROM table";
Gibt es in vi / vim einen Befehl, mit dem alles zwischen Anführungszeichen sofort gelöscht und der Cursor zwischen ihnen positioniert werden kann, damit ich mit der Eingabe beginnen kann?
vim
, aber NICHTvi
. (Nicht sicher)F"ci"
.Sie können zwischen Anführungszeichen wählen und dann mit ((
d
), change (c
) usw. löschenEbenso können Sie geschweifte Klammern, Klammern, XML-Elemente usw. wie folgt ersetzen:
oder einfach ändern / löschen, führen Sie die entsprechenden
di"
,ci"
usw. Durch Einsetzena
füri
Willen der umliegenden Elemente umfasst (so dass Sie die Klammern markieren oder ändern und Inhalte, zum Beispiel)quelle
Ich habe ein Plugin erstellt
vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotesEs bietet Textobjekte für die nächsten Anführungszeichenpaare eines beliebigen Typs und unterstützt Anführungszeichen, die sich über mehrere Zeilen erstrecken. Wenn Sie nur
iq
oder verwendenaq
, können Sie den Inhalt von einfachen ('), doppelten (") oder hinteren (`) Anführungszeichen bearbeiten, die derzeit den Cursor umgeben, sich vor oder hinter dem Cursor befinden (in dieser Reihenfolge). Mit anderen Worten, es springt bei Bedarf vorwärts oder rückwärts, um die Anführungszeichen zu erreichen.Es ist einfacher zu verstehen, wenn man sich Beispiele ansieht (der Cursor wird mit angezeigt
|
):foo '1, |2, 3' bar
;; nach dem Drücken vondiq
:foo '|' bar
foo| '1, 2, 3' bar
;; nach dem Drücken vondiq
:foo '|' bar
foo '1, 2, 3' |bar
;; nach dem Drücken vondiq
:foo '|' bar
foo '1, |2, 3' bar
;; nach dem Drücken vondaq
:foo | bar
foo| '1, 2, 3' bar
;; nach dem Drücken vondaq
:foo | bar
foo '1, 2, 3' |bar
;; nach dem Drücken vondaq
:foo | bar
Die obigen Beispiele gelten für einfache Anführungszeichen. Das Plugin funktioniert für doppelte (") und hintere (`) Anführungszeichen genauso.
Sie können auch alle anderen Operatoren:
ciq
,diq
,yiq
,viq
, usw.Weitere Informationen finden Sie auf der oben verlinkten Github-Seite.
quelle
Von bereits innerhalb der Anführungszeichen können Sie tun
Lesen Sie es als "löschen"
quelle
Zusätzlich zu Brians Antwort können Sie den neuen Wert auch
p
(einfügen) undy
(ziehen). Wenn Sie also den Wert in Anführungszeichen durch einen anderen Wert ersetzen möchten, können Sieyi"
die Auswahl, die Sie kopieren möchten,vi"
für den Bereich auswählen dass Sie ersetzen möchten und dann nurp
, um den Wert richtig zu ersetzen.quelle
Die gewählte Antwort ist NUR für ViM geeignet, NICHT jedoch für vi. Die Frage ist ebenfalls ungenau, da der Autor die ursprüngliche Position des Cursors nicht erwähnt hat. Wenn wir annehmen, dass sich der Cursor innerhalb der doppelten Anführungszeichen befindet, lautet die Antwort für vi:
Wo:
T "- gehe gleich nach dem" Zeichen zurück
c - Befehl ändern
t "- Geben Sie die Endposition für den Befehl c an, an der keine Zeichen mehr gelöscht werden sollen, dh der zu ändernde Bereich
quelle