Disons que j'ai cette ligne de code:
$query = "SELECT * FROM table";
Y a-t-il une commande dans vi / vim qui peut instantanément supprimer tout ce qui est entre guillemets et positionner le curseur entre eux pour que je puisse commencer à taper?
vim
, mais PASvi
. (Pas sûr)F"ci"
.Vous pouvez choisir entre les guillemets, puis supprimer (
d
), modifier (c
) etc. en utilisantDe même, vous pouvez remplacer des accolades, des crochets, des éléments XML, etc. ainsi:
ou pour simplement changer / supprimer, faire ce qui correspond
di"
,ci"
etc. Remplacera
par lai
volonté englobant les éléments environnants (donc vous marquez ou changez les crochets et le contenu, par exemple)la source
J'ai fait un plugin
vim-textobj-quotes
: https://github.com/beloglazov/vim-textobj-quotesIl fournit des objets texte pour les paires de guillemets les plus proches de tout type et prend en charge les guillemets s'étendant sur plusieurs lignes. Utiliser uniquement
iq
ouaq
cela vous permet d'opérer sur le contenu des guillemets simples ('), doubles (") ou arrière (`) qui entourent actuellement le curseur, se trouvent devant le curseur ou derrière (dans cet ordre de préférence) En d'autres termes, il saute en avant ou en arrière lorsque cela est nécessaire pour atteindre les guillemets.C'est plus facile à comprendre en regardant des exemples (le curseur est affiché avec
|
):foo '1, |2, 3' bar
:; après avoir appuyé surdiq
:foo '|' bar
foo| '1, 2, 3' bar
:; après avoir appuyé surdiq
:foo '|' bar
foo '1, 2, 3' |bar
:; après avoir appuyé surdiq
:foo '|' bar
foo '1, |2, 3' bar
:; après avoir appuyé surdaq
:foo | bar
foo| '1, 2, 3' bar
:; après avoir appuyé surdaq
:foo | bar
foo '1, 2, 3' |bar
:; après avoir appuyé surdaq
:foo | bar
Les exemples ci-dessus sont donnés pour les guillemets simples, le plugin fonctionne exactement de la même manière pour les guillemets doubles (") et arrière (`).
Vous pouvez également utiliser d'autres opérateurs:
ciq
,diq
,yiq
,viq
, etc.Veuillez consulter la page github ci-dessus pour plus de détails.
la source
De déjà à l'intérieur des citations, vous pouvez faire
Lisez-le comme supprimer à l'intérieur "
la source
En plus de la réponse de Brian, vous pouvez également
p
(coller) ety
(copier) la nouvelle valeur, donc si vous souhaitez remplacer la valeur entre guillemets par une autre valeur, vous pouvez faireyi"
sur la sélection que vous souhaitez copier,vi"
pour sélectionner la zone que vous souhaitez remplacer, puis justep
pour remplacer correctement la valeur.la source
La réponse choisie convient UNIQUEMENT à ViM mais PAS à vi. La question est également inexacte parce que l'auteur n'a pas mentionné la position initiale du curseur. Si nous supposons que le curseur est à l'intérieur des guillemets, alors pour vi, la réponse sera:
Où:
T "- reculer juste après le caractère"
c - commande de changement
t "- fournit la position de fin de la commande c, où elle doit arrêter d'effacer les caractères, en d'autres termes la plage à changer
la source