A partire da una lavagna vuota, come posso ottenere un documento che contiene
1
2
3
4
5
6
7
8
9
10
…
100
Per essere chiari, non voglio che questi numeri vengano visualizzati a margine; Li voglio inseriti nel documento stesso.
A partire da una lavagna vuota, come posso ottenere un documento che contiene
1
2
3
4
5
6
7
8
9
10
…
100
Per essere chiari, non voglio che questi numeri vengano visualizzati a margine; Li voglio inseriti nel documento stesso.
Risposte:
Usa :put
e range()
:
:put =range(1,100)
Per evitare la riga vuota in alto ( complimenti a Romainl ), utilizzare :0put
:
:0put =range(1,100)
Oltre a pure-vim di Undo :put =range(1,100)
(che in realtà ti lascia con una riga vuota in alto), puoi, a seconda del tuo sistema operativo, utilizzare uno dei suoi comandi. Ad esempio, su una scatola Unix / Linux:
%!seq 1 100
Quanto sopra funziona eseguendo il piping dell'intero buffer (vuoto) a seq
, che ignora il suo input e genera solo i numeri da 1 a 100. Vim quindi sostituisce l'intero buffer con seq
l'output.
È utile quando hai già familiarità con un modo da riga di comando per ottenere ciò che desideri.
Per la cronaca, e sicuramente non il modo più breve (vedi la fantastica soluzione di @ Undo), ma lo farà anche la sequenza di tasti:
i1EscqaYpCtrl+aq98@a
Lascia che lo scomponga per te:
i1<Esc>
- inserisci il numero 1, quindi torna alla modalità comandoqa
- avvia la registrazione di una macro nel registro "a"Y
- copia la riga correntep
- incolla la linea corrente (il cursore si sposterà anche sulla linea incollata)<Ctrl>a
- incrementa il numero successivo sulla riga, rendendolo 2q
- interrompere la registrazione della macro (era registro "a")98@a
- riprodurre la macro nel registro "a" 98 volteEcco un approccio diverso, che ha bisogno di un Vim più recente (qualcosa come 7.4.800)
Ciò presuppone un buffer vuoto e '1' nel registro a. In primo luogo immettere 100 1 nel buffer, "a100P.
Quindi selezionare visivamente le righe da 2 a 100 :2EnterVG.
Ora premi gCtrl+ A.
Leggi l'aiuto a :h v_g_CTRL-A
:h g_CTRL-A
So che questa domanda è molto vecchia, ma c'è anche un altro modo per farlo. Prova questo:
99o<esc>:%s/^/\=line('.')<cr>
99o<esc>
aprirà solo 100 righe vuote. Quindi, eseguiamo un comando sostitutivo:
:% " 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)
.