Comment remplacer le texte entre guillemets dans vi

Disons que j’ai cette ligne de code:

$query = "SELECT * FROM table"; 

Existe-t-il une commande dans vi / vim qui peut supprimer instantanément tout ce qui se trouve entre les guillemets et positionner le curseur entre eux afin que je puisse commencer à taper?

Utilisez ci" , ce qui signifie: changez quoi entre les guillemets.

Vous pouvez également manipuler d’autres objects texte de manière similaire, par exemple:

  • ci' – changer à l’intérieur des guillemets simples
  • ciw – changer à l’intérieur d’un mot
  • ci( – changer entre parenthèses
  • dit – supprimer dans une balise HTML, etc.

Plus d’informations sur les différents objects texte vim ici .

Vous pouvez choisir entre guillemets, puis supprimer ( d ), modifier ( c ), etc. en utilisant

 vi" 

De même, vous pouvez substituer des accolades, des crochets, des éléments XML, etc.

 vi( vi{ vit 

ou simplement changer / supprimer, faire les di" , ci" etc. En substituant a pour i vais englober les éléments environnants (donc vous marquez ou changez les crochets et le contenu, par exemple)

De déjà dans les citations que vous pouvez faire

 di" 

Lisez-le comme supprimer à l’intérieur ”

J’ai fait un plugin vim-textobj-quotes : https://github.com/beloglazov/vim-textobj-quotes

Il fournit des objects texte pour les paires de guillemets les plus proches de tout type et prend en charge les guillemets couvrant plusieurs lignes. En utilisant uniquement iq ou aq , vous pouvez opérer sur le contenu des guillemets simples (‘), doubles (“) ou arrière (`) qui entourent actuellement le curseur, sont devant le curseur ou derrière (dans cet ordre de En d’autres termes, il saute en avant ou en arrière au besoin pour atteindre les citations.

Il est plus facile à comprendre en regardant des exemples (le curseur est montré avec | ):

  1. Avant: foo '1, |2, 3' bar ; après avoir appuyé sur diq : foo '|' bar foo '|' bar
  2. Avant: foo| '1, 2, 3' bar foo| '1, 2, 3' bar ; après avoir appuyé sur diq : foo '|' bar foo '|' bar
  3. Avant: foo '1, 2, 3' |bar ; après avoir appuyé sur diq : foo '|' bar foo '|' bar
  4. Avant: foo '1, |2, 3' bar ; après avoir appuyé sur daq : foo | bar foo | bar
  5. Avant: foo| '1, 2, 3' bar foo| '1, 2, 3' bar ; après avoir appuyé sur daq : foo | bar foo | bar
  6. Avant: foo '1, 2, 3' |bar ; après avoir appuyé sur daq : foo | bar foo | bar

Les exemples ci-dessus sont donnés pour des guillemets simples, le plugin fonctionne exactement de la même manière pour les guillemets doubles (“) et arrières (`).

Vous pouvez également utiliser d’autres opérateurs: ciq , diq , yiq , viq , etc.

S’il vous plaît jeter un oeil à la page github liée ci-dessus pour plus de détails.

En plus de la réponse de Brian, vous pouvez aussi coller ( p ) et y (yank) la nouvelle valeur, donc si vous voulez remplacer la valeur entre guillemets par une autre valeur, vous pouvez yi" sur la sélection que vous voulez copier, vi" pour sélectionner la zone que vous souhaitez remplacer, puis p juste pour remplacer correctement la valeur.