82 votes

Comment changer jusqu'au prochain trait de soulignement dans VIm ?

Si j'ai ce texte dans vim, et que mon curseur se trouve au premier caractère :

www.foo.com

Je sais que je peux le faire :

  • cw de changer jusqu'à la première période, car un word (w minuscule) se termine par une ponctuation quelconque OU un espace blanc
  • cW de changer toute l'adresse, car une Word (w majuscule) se termine uniquement par un espace blanc.

Maintenant, et si j'ai ça :

stupid_method_name

et que vous voulez le changer en ceci ?

awesome_method_name

Les deux sites cw y cW changer tout le truc, mais je veux juste changer le fragment avant l'underscore.

Ma technique de repli est c/_ Cela signifie "changer jusqu'à ce que vous trouviez le prochain trait de soulignement dans une recherche", mais pour moi, cela entraîne également la mise en évidence de tous les traits de soulignement comme termes de recherche, ce qui est légèrement gênant.

Y a-t-il un spécificateur comme w o W qui n'inclut pas les underscores ?

0 votes

Quel est le problème avec :nohl ?

1 votes

I faire Je souhaite que les termes de recherche soient mis en évidence la plupart du temps, mais pas lorsque j'utilise la recherche comme un mouvement. (Je viens également de poser cette question : superuser.com/questions/244042/ )

111voto

Drahcir Points 2829

Vous pouvez faire cf_ . f ne mettra pas en évidence le caractère recherché.

Vous pouvez également faire ct_ si vous ne voulez pas inclure le _.

3 votes

C'est aussi incroyablement extensible et donc puissant. Je suppose que vous pouvez mettre n'importe quel caractère après le f ou le t et qu'il ira à l'occurrence suivante (ou prev pour les majuscules). Merci.

9 votes

Mnémotechnique : change 'til . c'est-à-dire ct_ peut être mémorisé comme "change 'til underscore".

81voto

Brian Frost Points 6544

Mettez ceci dans votre .vimrc :

set iskeyword-=_

Ainsi, _ sera traité comme une limite de mot (mais pas comme une limite de MOT), et cw pourra être utilisé pour modifier uniquement "génial", et cW pour modifier l'ensemble.

Voir :

:help iskeyword

et

:help word

pour plus d'informations.

10 votes

C'est génial de savoir que je peux définir mes propres limites de mots, mais après réflexion, je pense que la meilleure solution est la suivante ct_ comme le dit doubleface ci-dessous, puisque c'est concis et que c'est le comportement par défaut de vim.

2 votes

J'aime bien celui-ci, mais il casse mon code couleur syntaxique en php.

0 votes

Comment puis-je désactiver ou activer cette fonction ?

2voto

Jdoherty Points 21

camelcasemotion est un plugin vim très pratique qui vous permet de vous déplacer dans les mots lorsque vous utilisez la notation par soulignement ou minuscule. En utilisant ce plugin, vous pouvez placer une virgule devant la plupart des commandes de déplacement traditionnelles de vim, ce qui vous permettra de traiter les mots en notation underscore ou camelcase comme des mots complets.

1voto

Mat M Points 129

Comme un résumé de toutes les réponses précédentes :

Il n'y a pas de spécificateur pour exclure _

Vous pouvez faire cf_ . Le caractère recherché ( _ ici) seront inclus dans la chaîne remplacée.
Vous pouvez également faire ct_ si vous ne voulez pas inclure le caractère recherché ( _ ici).

  • f y t ne mettra pas en évidence le caractère recherché dans le fichier, contrairement à / .
  • f y t permet de rechercher un caractère
  • / tiendra compte d'un motif ou d'une chaîne plus longue et ne l'inclura pas, comme dans le cas de t

0 votes

Si vous avez l'intention d'ajouter des informations supplémentaires à une réponse, il suffit de l'étendre / la modifier. Ne copiez pas son contenu et ne le publiez pas comme une réponse personnelle. C'est du plagiat.

0 votes

@dirdi Je suis d'accord. J'ai essayé de modifier la première réponse, mais elle a été rejetée et on m'a suggéré de la poster moi-même.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X