Étant donné cette ligne de code en C:
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
Existe-t-il un moyen de supprimer ou d'extraire de la première parenthèse en gras à sa parenthèse correspondante? J'ai pensé à df), mais cela ne vous amènera qu'après le 9.0.
Existe-t-il un moyen similaire pour que vim récupère tout entre les accolades correspondantes, indépendamment des nouvelles lignes?
Le %
commande passe à la correspondance de l'élément sous le curseur. Positionnez le curseur sur le paren d'ouverture (ou de fermeture) et utilisez y%
pour tirer ou d%
pour tout supprimer du curseur au paren correspondant.
Cela fonctionne parce que %
est une "commande de mouvement", elle peut donc être utilisée partout où vim attend une telle commande. De :help y
:
["x]y{motion} Yank {motion} text [into register x]. When no
characters are to be yanked (e.g., "y0" in column 1),
this is an error when 'cpoptions' includes the 'E'
flag.
Par défaut, "item" inclut les crochets, les accolades, les parens, les commentaires de style C et diverses instructions de précompilateur (#ifdef
, etc.).
Il existe un plugin pour "correspondance% étendue" que vous pouvez trouver sur la page d'accueil Vim .
Vous pouvez lire la documentation sur %
et les commandes de mouvement associées en entrant :help various-motions
en mode commande.
Il existe un autre ensemble de commandes de mouvement que vous pouvez utiliser en mode visuel pour sélectionner divers objets texte.
Pour résoudre votre problème spécifique, vous devez procéder comme suit:
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
^
Disons que votre curseur est positionné sur ^
. Entrez la séquence suivante pour sélectionner la pièce que vous recherchez:
v2a)
v
passe d'abord en mode visuel, puis vous spécifiez que vous voulez aller 2
niveaux de parens en hausse. Finalement, le a)
sélectionne "un bloc". Après cela, vous pouvez utiliser d
ou x
pour supprimer, etc.
Si vous ne souhaitez pas inclure les parens externes, vous pouvez utiliser "bloc interne" à la place:
v2i)
Voir :help object-select
pour la liste complète des commandes associées.
Qu'en est-il de dib
ou di(
.
Il supprimera le bloc intérieur (...) où se trouve le curseur.
J'adore text-object mouvements et sélections!
Pour supprimer tout ce qui se trouve dans une paire de parenthèses, vous pouvez toujours émettre di(
et ses dérivés.
Remarque:
Comme l'a suggéré @porglezomb dans son commentaire, vous pouvez utiliser a
("avec") au lieu de i
("à l'intérieur") pour inclure les parenthèses. Donc, en utilisant da(
supprime tout à l'intérieur (
et )
comprenant (
et )
.
Suppression de texte à l'intérieur de la paire extérieure immédiate de parenthèses:
Donc, pour cette ligne de code
printf("%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32)));
^ ^
| |
\_______\___---> Cursor range
en supposant que votre curseur se trouve dans la plage de curseurs mentionnée ci-dessus, vous pouvez exécuter les commandes suivantes:
di( --> Deletes '5.0/9.0'
ci( --> Substitutes '5.0/9.0'
yi( --> Yanks '5.0/9.0'
Suppression de texte à l'intérieur de la n-ième paire de parenthèses externes:
Pour tout récupérer à l'intérieur de la n-ième paire de parenthèses externes, ajoutez simplement n
avant la commande ci-dessus. Donc, avec la même position de curseur que ci-dessus,
2di( --> Deletes '(5.0/9.0) * (fahr-32)'
2ci( --> Substitutes '(5.0/9.0) * (fahr-32)'
2yi( --> Yanks '(5.0/9.0) * (fahr-32)'
3di( --> Deletes '"%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32))'
3ci( --> Substitutes '"%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32))'
3yi( --> Yanks '"%3.0f\t%6.1f\n", fahr, ((5.0/9.0) * (fahr-32))'
Vous pouvez utiliser d% pour la suppression et y% pour le retrait.
Placez votre curseur sur la première parenthèse, puis appuyez sur v%y
ou v%d
.
Essayez ci [block-surrounder]
Dans votre cas, placez le curseur n'importe où entre les 2 parenthèses surlignées et essayez les touches: ci (
Comme réponse de David Norman dit,
v%y
ou v%d
.Explication de http://vimdoc.sourceforge.net/htmldoc/vimindex.html :
action char note note en mode Normal --------------------------------- --------------------------------------------- | v | v démarrer le mode visuel par caractère |% | % 1 trouve la parenthèse suivante (bouclée/carrée) sur Cette ligne et passe à sa correspondance, ou va à Parenthèse de commentaire correspondante, ou va à la correspondance | D | ["x] d {motion} 2 supprimer le texte Nmove [dans le tampon x]
Cela signifie qu'il sélectionnera tout entre et y compris les deux crochets (%
) tout en vous montrant visuellement la sélection (v
), puis tirez/copiez y
ou supprimez/coupez d
. (Vers le tampon par défaut.)
Vous pouvez mettre/coller avec p
.
A fait cette réponse à "apprends-moi à pêcher" .