¿Cómo pego la misma línea de código X veces pero cambio una palabra en la línea cada vez?


8

Estoy escribiendo listas HTML y quiero poder pegar automáticamente 10 elementos de la lista donde el texto del elemento es lo único que cambia.

Podría lograr esto usando PHP y luego simplemente copiando el código HTML representado, pero si hay una manera de omitir ese paso y hacerlo directamente desde Vim, eso me ahorraría mucho tiempo.


44
Eche un vistazo al complemento github.com/mattn/emmet-vim , puede satisfacer sus necesidades. De lo contrario, puede usar una macro para hacerlo, ¿conoce el texto de antemano?
— nobe4

Sí, sé qué texto quiero poner en cada elemento. Gracias por la sugerencia de plugin. Estaré en casa esta noche y también veré las macros de Vim.
— Azmodeus

Respuestas:


9

Para lo que quieres hacer, emmet-vim , como sugiere nobe4, es tu mejor opción.

En el modo de inserción, li{item $}*10<c-y>,se expandirá 10 <li>s con item Nprecargado como texto. Comenzarás a editar el contenido del primero. Mientras todavía está en modo de inserción, al presionar <c-y>nse moverá a la siguiente etiqueta para editar.

Si los elementos de su lista no son una secuencia de texto repetido, puede usar vim-surround para ayudar.

Ejemplo de lista de texto que debe envolverse:

abc
def
ghi

Si comienza con el cursor en algún lugar del texto, al presionar se ^vip$<c-v>Stli<cr>ajustará cada línea <li></li>.

^     - move to the first column
vip   - select the paragraph
$     - Move to the last column in the selection
<c-v> - Convert the visual selection into a block. Without the
        previous $, it would only select 1 column.
St    - Start vim-surround's tag entry
li    - The tag name
<cr>  - Enter

Esto se puede convertir en un mapa de teclas fácil de usar:

nmap <leader>li ^vip$<c-v>Stli<cr>

1
Me has ahorrado mucha agonía en los dedos. Gracias Señor.
— Azmodeus

1
@Azmodeus Me alegra que haya ayudado. vim-surround es un refuerzo de productividad tal que debería tomarse el tiempo para seguirlo junto con sus documentos. Y por si no lo sabía, emmet-vim funcionará en hojas de estilo precompiladas como sass o menos. Por ejemplo, intente esto en un archivo scss:.col$*5>.inner
— Tommy A

2

Probablemente haría esto con un mapeo:

 :nmap ^B o<li></li>^[4hi

El plan es insertar en las etiquetas y luego colocar la inserción entre ellas, de modo que pueda escribir el texto, volver al modo normal y luego hacer ctrl-b nuevamente. (PS, los ^ B y ^ [se ingresan usando ctrl_V, pero probablemente ya lo sabías.) Para poner en diez filas en un solo comando, puedes usar

10ctrl_b

No estaba claro si tiene alguna forma automática de crear el texto del elemento.

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.