it-swarm.com.de

So ersetzen Sie Text zwischen Anführungszeichen in vi

Angenommen, ich habe diese Codezeile:

$query = "SELECT * FROM table";

Gibt es in vi/vim einen Befehl, der sofort alles zwischen Anführungszeichen löschen und den Cursor zwischen sie setzen kann, damit ich mit dem Tippen beginnen kann?

91
Nikola

Verwenden Sie ci", was bedeutet: Ändern Sie das, was in den Anführungszeichen steht. 

Sie können auch andere Textobjekte auf ähnliche Weise bearbeiten, z.

  • ci' - Ändern Sie die Anführungszeichen
  • ciw - innerhalb eines Wortes ändern 
  • ci( - Änderung in Klammern
  • dit - Löschen innerhalb eines HTML-Tags usw.

Mehr zu verschiedenen vim Textobjekten hier .

148
Eugene Yarmash

Sie können zwischen Anführungszeichen wählen und dann löschen (d), ändern (c) usw. mit

vi"

Ebenso können Sie Klammern, Klammern, XML-Elemente usw. wie folgt ersetzen:

vi(
vi{
vit

oder zum einfachen Ändern/Löschen den entsprechenden di", ci" usw. ausführen. Wenn Sie a für i ersetzen, werden die umgebenden Elemente eingeschlossen (sodass Sie die Klammern markieren oder ändern - nd Inhalt, zum Beispiel)

22
Brian Agnew

Ich habe ein Plugin erstellt vim-textobj-quotes: https://github.com/beloglazov/vim-textobj-quotes

Es stellt Textobjekte für die nächstgelegenen Anführungspaare eines beliebigen Typs bereit und unterstützt Anführungszeichen, die sich über mehrere Zeilen erstrecken. Wenn Sie nur iq oder aq verwenden, können Sie den Inhalt von einfachen ('), doppelten (") oder hinteren (`) Anführungszeichen bearbeiten, die den Cursor gerade umgeben, vor dem Cursor stehen oder hinter (in dieser Reihenfolge von) Präferenz) Mit anderen Worten, es springt vorwärts oder rückwärts, wenn die Zitate erreicht werden müssen. 

Es ist einfacher zu verstehen, wenn Sie Beispiele betrachten (der Cursor wird mit | angezeigt):

  1. Vorher: foo '1, |2, 3' bar; nach dem Drücken von diq: foo '|' bar
  2. Vorher: foo| '1, 2, 3' bar; nach dem Drücken von diq: foo '|' bar
  3. Vorher: foo '1, 2, 3' |bar; nach dem Drücken von diq: foo '|' bar
  4. Vorher: foo '1, |2, 3' bar; nach dem Drücken von daq: foo | bar
  5. Vorher: foo| '1, 2, 3' bar; nach dem Drücken von daq: foo | bar
  6. Vorher: foo '1, 2, 3' |bar; nach dem Drücken von daq: foo | bar

Die obigen Beispiele werden für einfache Anführungszeichen gegeben. Das Plugin funktioniert genauso wie für doppelte (") und hintere (`) Anführungszeichen. 

Sie können auch andere Operatoren verwenden: ciq, diq, yiq, viq usw.

Bitte schauen Sie sich die oben verlinkte Github-Seite für weitere Details an.

4

Bereits in den Anführungszeichen können Sie tun 

di"

Lesen Sie es als löschen innerhalb "

3
Sam Peacey

Als Ergänzung zu Brians Antwort können Sie auch p (Einfügen) und y (Yank) des neuen Werts verwenden. Wenn Sie den Wert in Anführungszeichen durch einen anderen Wert ersetzen möchten, können Sie yi" für die zu kopierende Auswahl tun. vi" Wählen Sie den Bereich aus, den Sie ersetzen möchten, und p, um den Wert richtig zu ersetzen.

0
Ulisses Caon