Pouvez-vous attraper ou de supprimer entre parenthèses dans la vi/vim?
Compte tenu de cette ligne de code en C:
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
Est-il un moyen de supprimer ou de copier à partir de la première en gras entre parenthèses à son correspondant entre parenthèses? J'ai pensé à df), mais qui seront les seuls à vous faire juste après la 9.0.
Est-il une manière similaire pour obtenir de vim pour attraper tout ce qui est entre parenthèse, indépendamment de retours à la ligne?
Vous devez vous connecter pour publier un commentaire.
Différentes Motions: %
La
%
commande sauts pour le match de l'objet sous le curseur. Placez le curseur sur l'ouverture (ou la fermeture) parenthèse et l'utilisationy%
pour aspirer oud%
pour la suppression de tout, à partir du curseur jusqu'à la parenthèse.Cela fonctionne parce que
%
est une "commande de mouvement", de sorte qu'il peut être utilisé n'importe où vim attend une commande. De:aider à y
:Par défaut, "élément" comprend des crochets, accolades, parenthèses, C-les commentaires de style et de divers précompilateur consolidés (
#ifdef
, etc.).Il y a un plugin pour "extended % correspondant à" que vous pouvez trouver sur le Vim page d'accueil.
Vous pouvez lire la documentation sur
%
et de mouvement relatif des commandes en entrant:aide à diverses motions-
en mode commande.objet, sélectionnez
Il est un autre jeu de commandes de mouvement que vous pouvez utiliser dans le mode Visuel pour sélectionner les différents objets de texte.
Pour résoudre votre problème spécifique, vous devez effectuer les opérations suivantes:
Disons que votre curseur est positionné à
^
. Entrez la séquence suivante pour sélectionner la partie que vous êtes à la recherche pour:Première
v
entre dans le mode Visuel, puis vous spécifiez que vous voulez aller2
niveaux de parenthèses jusqu'. Enfin, lea)
sélectionne "d'un bloc". Après cela, vous pouvez utiliserd
oux
à supprimer, etc.Si vous ne voulez pas inclure l'extérieur des parenthèses, vous pouvez utiliser le "bloc interne" au lieu de:
Voir
:aide de l'objet, sélectionnez
pour la liste complète des commandes connexes.a
signifie "autour" plutôt que "une". Sentir comme elle vient compléter "intérieure" de mieux. Pas un jour ne passe pas apprendre quelque chose de nouveau à propos de Vim, il me semble.Ce sujet
dib
oudi(
.Il va supprimer l' intérieure (...) du bloc où se trouve le curseur.
J'aime texte-objet les motions et les sélections!
dab
=> supprimer un bloc (y compris ses parenthèses)Pour supprimer tout ce qui est à l'intérieur d'une paire de parenthèses, vous pouvez toujours émettre
di(
et de ses dérivés.Remarque :
Comme @porglezomb l'a indiqué dans son commentaire, vous pouvez utiliser
a
("avec") au lieu dei
("à l'intérieur") pour inclure les parenthèses. Ainsi, l'utilisation deda(
supprime tout à l'intérieur de(
et)
y compris(
et)
.Supprimer du texte à l'intérieur de l'immédiat extérieure paire de parenthèses :
Donc, pour cette ligne de code
en supposant que votre curseur est à l'intérieur de l'mentionnés ci-dessus du curseur de plage, vous pouvez exécuter les commandes suivantes :
Supprimer du texte à l'intérieur de la n-ième paire extérieure de parenthèses :
À saisir tout à l'intérieur de la n-ième paire extérieure de parenthèses, il suffit d'ajouter
n
avant la commande ci-dessus. Ainsi, avec la même position du curseur en tant que ci-dessus,answering the question
au lieu deasking the question
?a
comme la contrepartie dei
, puisque c'est probablement aider beaucoup de gens.%
pour ce problème, mais cela prend plus de temps et, à mon avis, doit être utilisé uniquement pour des scénarios plus complexes. La suppression de quelque chose à l'intérieur de certaines limites, est exactement le cas d'utilisation dedi
est faite pour.Vous pouvez utiliser d% pour la supprimer et y% pour les extraire.
Placez votre curseur sur la première parenthèse, puis appuyez sur
v%y
ouv%d
.Essayer de ci[bloc-qui entoure]
Dans votre cas, placez le curseur n'importe où entre les 2 parenthèses que vous avez mis en surbrillance et essayer de les touches: ci(
Comme réponse de David Norman dit,
Placez votre curseur sur la première parenthèse, puis appuyez sur
v%y
ouv%d
.Explication de http://vimdoc.sourceforge.net/htmldoc/vimindex.html:
Cela signifie qu'il va sélectionner tout ce qui entre et y compris les deux supports (
%
) tout en montrant la sélection pour vous visuellement (v
) et ensuite copier/copiery
ou supprimer un couper/d
il. (À la mémoire tampon par défaut.)Vous pouvez mettre/coller avec
p
.Fait cette réponse à "apprends-moi à pêcher".