A partir de uma folha em branco, como posso obter um documento que contém
1
2
3
4
5
6
7
8
9
10
…
100
Para ser claro, não quero que esses números sejam exibidos na margem; Quero que eles sejam inseridos no próprio documento.
A partir de uma folha em branco, como posso obter um documento que contém
1
2
3
4
5
6
7
8
9
10
…
100
Para ser claro, não quero que esses números sejam exibidos na margem; Quero que eles sejam inseridos no próprio documento.
Respostas:
Use :put
e range()
:
:put =range(1,100)
Para evitar a linha em branco na parte superior ( parabéns para romainl ), use :0put
:
:0put =range(1,100)
Além do pure-vim do Undo :put =range(1,100)
(que na verdade deixa uma linha em branco no topo), você pode, dependendo do sistema operacional, usar um de seus comandos. Por exemplo, em uma caixa Unix / Linux:
%!seq 1 100
O procedimento acima funciona canalizando todo o buffer (vazio) para seq
, o que ignora sua entrada e apenas gera os números de 1 a 100. O Vim substitui todo o buffer pela seq
saída.
Isso é útil quando você já está familiarizado com alguma maneira da linha de comando de obter o que deseja.
Para o registro, e definitivamente não é o caminho mais curto (consulte a incrível solução do @ Undo), mas a sequência de pressionamentos de tecla também o fará:
i1EscqaYpCtrl+aq98@a
Deixe-me explicar isso para você:
i1<Esc>
- insira o número 1 e volte ao modo de comandoqa
- comece a gravar uma macro no registro "a"Y
- copie a linha atualp
- cole a linha atual (o cursor também se moverá para a linha colada)<Ctrl>a
- incremente o próximo número na linha, tornando-o 2q
- pare de gravar a macro (foi registrada "a")98@a
- repita a macro no registro "a" 98 vezesAqui está uma abordagem diferente, que precisa de um Vim mais recente (algo como 7.4.800)
Isso pressupõe um buffer vazio e '1' no registro a. Primeiro, digite 100 1 no seu buffer "a100P,.
Em seguida, selecione visualmente as linhas 2 a 100 :2EnterVG.
Agora pressione gCtrl+ A.
Leia a ajuda em :h v_g_CTRL-A
:h g_CTRL-A
Sei que essa pergunta é realmente antiga, mas há outra maneira de fazer isso também. Tente o seguinte:
99o<esc>:%s/^/\=line('.')<cr>
99o<esc>
abrirá apenas 100 linhas em branco. Em seguida, executamos um comando substituto:
:% " 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)
.