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

60

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:

  • cwpour changer jusqu'à la première période, car un word(minuscule w) se termine à n'importe quelle ponctuation OU un espace blanc
  • cWpour changer l'adresse entière, car un Word(majuscule w) se termine uniquement par un espace

Maintenant, si j'ai ceci:

stupid_method_name

et vous voulez changer cela?

awesome_method_name

Les deux cwet cWchanger la chose, mais je veux juste changer le fragment avant le trait de soulignement.

Ma technique de repli consiste à c/_«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 surbrillance en tant que termes de recherche, ce qui est légèrement gênant.

Existe-t-il un spécificateur comme wou Wqui n'inclut pas de soulignement?

Nathan Long
la source
Quel est le problème avec :nohl?
Ignacio Vazquez-Abrams
Je ne veux termes de recherche à mettre en valeur la plupart du temps; mais pas quand j'utilise la recherche comme un mouvement. (Je viens également de poser cette question: superuser.com/questions/244042/… )
Nathan Long

Réponses:

82

Tu peux faire cf_. f ne mettra pas en évidence le caractère recherché.

Vous pouvez également le faire ct_si vous ne souhaitez pas inclure le _.

double face
la source
15
Vous confondez f, t, F et T. favance vers le personnage; Frecule vers le personnage; tavance juste avant le personnage; et Trecule vers le personnage situé à droite du personnage cible. Donc, votre deuxième exemple aurait dû être ct_.
garyjohn
2
Maintenant ma réponse est corrigée. Désolé et merci
double face
4
ct_est exactement ce que je voulais. Cela fait maintenant partie de mon flux de travail régulier. Merci!
Nathan Long
1
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 il ira à la prochaine occurrence (ou précédente pour les majuscules). Merci.
Dom
2
Vim n'échoue jamais, seulement la compréhension de ce dont il est capable!
Benjamin R
65

Mettez ceci dans votre .vimrc:

set iskeyword-=_

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

Voir:

:help iskeyword

et

:help word

pour plus d'informations.

frabjous
la source
6
Il est bon de savoir que je peux définir mes propres limites de mots, mais après réflexion, je pense que la meilleure solution est, ct_comme le dit Doubleface ci-dessous, car elle est concise et constitue le comportement par défaut de Vim.
Nathan Long
Ceci est mon préféré
Jay
2
J'aime celui-ci, mais il casse ma syntaxe en codant les couleurs en php.
Aaron Surrain
Comment puis-je désactiver ou basculer ceci?
Behe
1

camelcasemotion est un plugin vim très pratique qui vous permet de parcourir les mots lorsque vous utilisez la notation avec 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.

Jdoherty
la source