¿Cómo bloquear el código de reemplazo en modo visual?


26

Tengo una lista de elementos donde quiero reemplazar los dos primeros caracteres:

a) item 1
b) item 2
c) item 3

¿Cuál es la forma más rápida de hacer esto?

* item 1
* item 2
* item 3

Tengo un enfoque con modo visual (Ctr-v, jjj, pero necesito hacer dos comandos de reemplazo. Iirc, este reemplazo se puede hacer con 1 comando)


1
¿Me gusta .,.+2s/^../*/(o equivalente en una selección visual)? ¿Por qué dos comandos de reemplazo? 2creemplazaría dos caracteres.
muru

a veces solo se cambia la primera línea en la selección visual, repitiendo luego con. porque las otras líneas arruinan las cosas.
poseid

2
@poseid ¿tienes la costumbre de presionar en Ctrl-Clugar de Esc? Esto evita, entre otras cosas, que se apliquen cambios a cada línea de una selección de bloque visual.
tommcdo

¡Ese podría ser el principal motivo de confusión! ¡Gracias!
poseid

Respuestas:


26

Selección de bloque visual:

<C-v>
jjl
c*
<Esc>

:normal:

:,+2norm! cE*

Sustitución:

:,+2s/^.\{2}/*

Fórmula de puntos:

cE*<Esc>
j.
j.

1
Enfoque loco: usando textobj-word-column.vim puedes hacer ciC*<esc>y terminar. Nota: este complemento es un complemento de "haz lo que quiero decir", por lo que falla en lugares y formas inesperados, pero el complemento sigue siendo útil en algunos casos fáciles como este.
Peter Rincker

interesante la fórmula normal y de puntos!
poseid

3
Tenga en cuenta que para la solución Visual-block, solo verá el texto que se escribe en la primera línea. Una vez que golpeas <Esc>, completará las líneas restantes.
tommcdo

¿Alguna sugerencia para recordar que c reemplazará? Como ctrl + D (propio)
Jordan Mackie

2
@JordanMackie ces para "cambio".
romainl

17

Aquí hay una forma más eficiente de hacer esto:

  1. Con el cursor sobre el primer elemento y la primera letra ( 0), ingrese al modo visual 'blockwise' Ctrl+ vy seleccione la primera columna de su párrafo actual por }(si su lista está terminada por una nueva línea), de lo contrario use diferentes métodos como teclas de flecha (para mover alrededor de la selección), o busque un patrón /c)donde ces su último elemento).
  2. Muévase al último símbolo de su lista con ky l(o con las teclas de flecha ), de modo que se seleccionen dos columnas que desea cambiar.
  3. Cambie el texto seleccionado presionando cy escriba su símbolo de viñeta ( *) y termine presionando Esc.

Funciona de manera más eficiente, especialmente en las listas más largas.

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.