Disons que j'ai cette ligne de code:
$query = "SELECT * FROM table";
Existe-t-il une commande dans vi/vim permettant de supprimer instantanément tout ce qui se trouve entre guillemets et de positionner le curseur entre eux afin que je puisse commencer à saisir?
Utilisez ci"
, ce qui signifie: changez le contenu des guillemets.
Vous pouvez également manipuler d’autres objets texte de la même manière, par exemple:
ci'
- changer à l'intérieur des guillemets simplesciw
- changer à l'intérieur d'un mot ci(
- changer entre parenthèsesdit
- supprime une balise HTML, etc.En savoir plus sur les différents objets texte vim ici .
Vous pouvez choisir entre guillemets puis supprimer (d
), modifier (c
) etc. à l’aide de
vi"
De même, vous pouvez substituer des accolades, des crochets, des éléments XML, etc. ainsi:
vi(
vi{
vit
ou pour simplement changer/supprimer, effectuez les opérations suivantes: di"
, ci"
etc. En remplaçant a
par i
, vous engloberez les éléments environnants (pour marquer ou modifier le contenu des crochets et, par exemple).
J'ai créé un plugin vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotes
Il fournit des objets texte pour les paires de guillemets les plus proches, quel que soit leur type, et prend en charge les guillemets couvrant plusieurs lignes. En utilisant uniquement iq
ou aq
, il vous permet d’opérer sur le contenu des guillemets simples ('), doubles (") ou arrières (`) entourant actuellement le curseur, devant En d’autres termes, il saute en avant ou en arrière au besoin pour atteindre les guillemets.
C'est plus facile à comprendre en regardant des exemples (le curseur est montré avec |
):
foo '1, |2, 3' bar
; après avoir appuyé sur diq
: foo '|' bar
foo| '1, 2, 3' bar
; après avoir appuyé sur diq
: foo '|' bar
foo '1, 2, 3' |bar
; après avoir appuyé sur diq
: foo '|' bar
foo '1, |2, 3' bar
; après avoir appuyé sur daq
: foo | bar
foo| '1, 2, 3' bar
; après avoir appuyé sur daq
: foo | bar
foo '1, 2, 3' |bar
; après avoir appuyé sur daq
: 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 back (`).
Vous pouvez également utiliser n'importe quel autre opérateur: ciq
, diq
, yiq
, viq
, etc.
Veuillez consulter la page github liée ci-dessus pour plus de détails.
Deja dans les citations que vous pouvez faire
di"
Lire comme supprimer à l'intérieur "
En plus de la réponse de Brian, vous pouvez aussi p
(coller) et y
(yank) la nouvelle valeur. Ainsi, si vous voulez remplacer la valeur entre guillemets par une autre valeur, vous pouvez utiliser yi"
pour la sélection que vous souhaitez copier, vi"
. pour sélectionner la zone que vous souhaitez remplacer, puis p
pour remplacer correctement la valeur.