¿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?


¿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 _.


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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.