¿Cómo cambio hasta el próximo guión bajo en VIm?

60

Si tengo este texto en vim, y mi cursor está en el primer carácter:

www.foo.com

Sé que puedo hacer:

  • cwpara cambiar hasta el primer período, porque una word(w minúscula) termina en cualquier puntuación O espacio en blanco
  • cWpara cambiar la dirección completa, porque una Word(w mayúscula) termina solo en espacios en blanco

Ahora, ¿qué pasa si tengo esto?

stupid_method_name

y quieres cambiarlo por esto?

awesome_method_name

Ambos cwy cWcambiar todo, pero solo quiero cambiar el fragmento antes del guión bajo.

Mi técnica alternativa es c/_, que significa 'cambiar hasta llegar al siguiente guión bajo en una búsqueda', pero para mí, eso también hace que todos los guiones bajos se resalten como términos de búsqueda, lo cual es un poco molesto.

¿Hay un especificador como wo Wque no incluya guiones bajos?

Nathan Long
fuente
¿Qué tiene de malo :nohl?
Ignacio Vazquez-Abrams
Quiero que los términos de búsqueda se destaquen la mayor parte del tiempo; pero no cuando uso la búsqueda como movimiento. (También acabo de hacer esta pregunta: superuser.com/questions/244042/… )
Nathan Long

Respuestas:

82

Puedes hacer cf_. f no resaltará el carácter buscado.

También puede hacerlo ct_si no desea incluir el _.

doble cara
fuente
15
Estás confundiendo f, t, F y T. favanza hacia el personaje; Fretrocede al personaje; tavanza justo antes del personaje; y Tretrocede al personaje a la derecha del personaje objetivo. Entonces su segundo ejemplo debería haber sido ct_.
garyjohn
2
Ahora mi respuesta está corregida. Perdón y gracias.
doble cara
44
ct_Es exactamente lo que quería. Esto ahora se ha convertido en parte de mi flujo de trabajo habitual. ¡Gracias!
Nathan Long
1
Esto también es increíblemente extensible y, por lo tanto, potente. Supongo que puedes poner cualquier carácter después de f o t y pasará a la siguiente (o anterior para mayúsculas). Gracias.
Dom
2
¡Vim nunca falla, solo la comprensión de uno de lo que es capaz!
Benjamin R
65

Pon esto en tu .vimrc:

set iskeyword-=_

Entonces _ será tratado como un límite de palabra (aunque no como un límite de WORD), y cw podría usarse para cambiar simplemente "impresionante", y cW para cambiar todo.

Ver:

:help iskeyword

y

:help word

para más información.

precioso
fuente
66
Es genial saber que puedo definir mis propios límites de palabras, pero después de pensarlo, creo que la mejor solución es ct_como dice doble cara a continuación, ya que es conciso y es el comportamiento predeterminado de vim.
Nathan Long
Este es mi favorito personal
Jay
2
Me gusta este, pero rompe mi codificación de color de sintaxis en php.
Aaron Surrain
¿Cómo puedo desactivar o alternar esto?
Behe
1

camelcasemotion es un complemento vim bastante útil que te permite moverte a través de las palabras cuando usas subrayado o notación camelcase. Con este complemento, puede colocar una coma delante de muchos de los comandos de movimiento vim tradicionales que le permitirán tratar las palabras en subrayado o notación de camello como palabras completas.

Jdoherty
fuente