VIM: movimiento `t` con dos o más caracteres

VIM: movimiento `t` con dos o más caracteres

Suponiendo una línea como:

grep -ir "$@" * | grep -v "/.svn/" | grep -v "/inc/help/" | head -n 100

Si el cursor está en el primero |y quiero eliminar hasta head, ¿cómo podría hacerlo con t? Sé que puedo v/heaseleccionar hasta, pero cuando borre el texto , también heahabré eliminado el principio h. headPodría simplemente hrespaldar a un personaje, pero ahora esto es una cadena de soluciones. Funciona, pero me gustaría saber si hay una manera mejor.

¿Hay alguna forma de tdepender de dos o más personajes en lugar de un solo personaje?

Respuesta1

Prueba esto:

:vnoremap / //b-1<left><left><left><left>

Cuando escribe vpara seleccionar visualmente una región, luego escribe /para comenzar la búsqueda del final de la región, Vim ingresará

//b-1

en la línea de comando con el cursor sobre el segundo /. Luego escribe los 2 o más caracteres con los que desea terminar la región y presiona Enter. Le b-1dice a Vim que busque ese patrón y coloque el cursor un carácter antes ( -1) del bcomienzo de la coincidencia. Ver

:help search-offset

No es necesario hacer un mapa /. Podrías mapear to algún otro personaje en su lugar.

Respuesta2

Si puedes hacerlo de forma interactiva, puedes probarlo concomplemento easymotion:

d;;fh-> atenuará todo el texto y marcará todas hlas letras en rojo, pero sustitúyalas por a,b,c,…y luego podrá presionar bpara eliminar a la segunda h.

Sé que esta descripción es un poco críptica; eche un vistazo avideo de Youtube

Ps.: Olvidé mencionar ;que es mi clave de líder.

Respuesta3

d2fhLo haré en tu ejemplo.

Respuesta4

No, tacepta solo un carácter. Lo haría vththd.

información relacionada