web-dev-qa-db-fra.com

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

Si j'ai ce texte dans vim et que mon curseur est sur le premier caractère:

www.foo.com

Je sais que je peux faire:

  • cw pour changer jusqu'à la première période, car une Word (minuscule w) se termine à n'importe quelle ponctuation OR espace blanc
  • cW pour changer l’adresse complète, car une Word (majuscule w) se termine uniquement par des espaces

Maintenant, si j'ai ceci:

stupid_method_name

et vous voulez changer cela?

awesome_method_name

cw et cW changent le tout, mais je veux juste changer le fragment avant le trait de soulignement.

Ma technique de secours est c/_, ce qui signifie "changer jusqu'à ce que vous appuyiez sur le trait de soulignement suivant dans une recherche", mais pour moi, tous les traits de soulignement sont également mis en évidence en tant que termes de recherche, ce qui est légèrement gênant.

Existe-t-il un spécificateur tel que w ou W qui n'inclut pas de traits de soulignement?

58
Nathan Long

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

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

79
doubleface

Mettez ceci dans votre .vimrc:

set iskeyword-=_

Ensuite, _ sera traité comme une limite de Word (bien que ce ne soit pas une limite de Word), et cw pourrait simplement être utilisé pour changer "génial", et cW pour tout changer.

Voir:

:help iskeyword

et

:help Word

pour plus d'informations.

62
frabjous

camelcasemotion est un plugin très pratique qui vous permet de parcourir les mots lorsque vous utilisez la notation soulignement ou camelcase. En utilisant ce plugin, vous pouvez placer une virgule devant la plupart des commandes de mouvement vim traditionnelles, ce qui vous permettra de traiter les mots en caractères de soulignement ou camelcase comme des mots entiers.

1
Jdoherty