A partir de una pizarra en blanco, ¿cómo puedo obtener un documento que contiene
1
2
3
4
5
6
7
8
9
10
…
100
Para ser claros, no quiero que estos números se muestren en el margen; Quiero que se inserten en el documento mismo.
A partir de una pizarra en blanco, ¿cómo puedo obtener un documento que contiene
1
2
3
4
5
6
7
8
9
10
…
100
Para ser claros, no quiero que estos números se muestren en el margen; Quiero que se inserten en el documento mismo.
Respuestas:
Uso :put
y range()
:
:put =range(1,100)
Para evitar la línea en blanco en la parte superior ( felicitaciones a romainl ), use :0put
:
:0put =range(1,100)
Además de Undo's pure-vim :put =range(1,100)
(que en realidad te deja con una línea en blanco arriba), puedes, dependiendo de tu sistema operativo, usar uno de sus comandos. Por ejemplo, en una caja de Unix / Linux:
%!seq 1 100
Lo anterior funciona canalizando todo el búfer (vacío) a seq
, que ignora su entrada y solo emite los números del 1 al 100. Vim luego reemplaza todo el búfer con seq
la salida de.
Eso es útil cuando ya está familiarizado con alguna forma de línea de comandos para obtener lo que desea.
Para el registro, y definitivamente no es el camino más corto (ver la increíble solución de @ Deshacer), pero la secuencia de teclas también lo hará:
i1EscqaYpCtrl+aq98@a
Déjame desglosar eso para ti:
i1<Esc>
- inserte el número 1, luego vuelva al modo de comandoqa
- comenzar a grabar una macro en el registro "a"Y
- copiar la línea actualp
- pegue la línea actual (el cursor también se moverá a la línea pegada)<Ctrl>a
- incremente el siguiente número en la línea, haciéndolo 2q
- dejar de grabar la macro (se registró "a")98@a
- reproducir la macro en el registro "a" 98 vecesAquí hay un enfoque diferente, que necesita un Vim más nuevo (algo así como 7.4.800)
Esto supone un búfer vacío y '1' en el registro a. Primero introduzca 100 1 en su memoria intermedia, "a100P.
Luego, seleccione visualmente las líneas 2 hasta 100 :2EnterVG.
Ahora presiona gCtrl+ A.
Lee la ayuda en :h v_g_CTRL-A
:h g_CTRL-A
Sé que esta pregunta es muy antigua, pero también hay otra forma de hacerlo. Prueba esto:
99o<esc>:%s/^/\=line('.')<cr>
99o<esc>
solo abrirá 100 líneas en blanco. Luego, ejecutamos un comando sustituto:
:% " On every line
s/ " substitute
^/ " the start of the line. (This will always match no matter what)
\= " Evaluate:
line('.') " The current line.
<C-r>=range(1,100)
.