À partir d’une ardoise vierge, comment puis-je obtenir un document contenant
1
2
3
4
5
6
7
8
9
10
…
100
Pour être clair, je ne veux pas que ces chiffres soient affichés dans la marge; Je veux les insérer dans le document lui-même.
À partir d’une ardoise vierge, comment puis-je obtenir un document contenant
1
2
3
4
5
6
7
8
9
10
…
100
Pour être clair, je ne veux pas que ces chiffres soient affichés dans la marge; Je veux les insérer dans le document lui-même.
Réponses:
Utiliser :put
et range()
:
:put =range(1,100)
Pour éviter la ligne blanche en haut ( félicitations à romainl ), utilisez :0put
:
:0put =range(1,100)
En plus du pure-vim de Undo :put =range(1,100)
(qui vous laisse en réalité avec une ligne vide en haut), vous pouvez, en fonction de votre système d'exploitation, utiliser l'une de ses commandes. Par exemple, sur une machine Unix / Linux:
%!seq 1 100
Ce qui précède fonctionne en canalisant le tampon entier (vide) vers seq
, ce qui ignore son entrée et ne sort que les nombres de 1 à 100. Vim remplace alors tout le tampon par seq
la sortie de.
C'est utile lorsque vous êtes déjà familiarisé avec un moyen en ligne de commande d'obtenir ce que vous voulez.
Pour mémoire, et certainement pas le moyen le plus court (voir la solution géniale de @ Undo), mais une séquence de frappe suffira également:
i1EscqaYpCtrl+aq98@a
Laissez-moi vous en parler:
i1<Esc>
- insère le chiffre 1, puis retourne en mode commandeqa
- commencer à enregistrer une macro dans le registre "a"Y
- copier la ligne en coursp
- coller la ligne en cours (le curseur se déplacera également vers la ligne collée)<Ctrl>a
- incrémente le nombre suivant sur la ligne, le faisant 2q
- arrêter d'enregistrer la macro (le registre "a" était-il)98@a
- rejouer la macro dans le registre "a" 98 foisVoici une approche différente, qui nécessite un nouveau Vim (quelque chose comme 7.4.800)
Cela suppose un tampon vide et «1» dans le registre a. Entrez d' abord 100 1 dans votre tampon, "a100P.
Puis sélectionnez visuellement les lignes 2 à 100 :2EnterVG.
Maintenant, appuyez sur gCtrl+ A.
Lisez l'aide à :h v_g_CTRL-A
:h g_CTRL-A
Je sais que cette question est vraiment ancienne, mais il y a une autre façon de le faire aussi. Essaye ça:
99o<esc>:%s/^/\=line('.')<cr>
99o<esc>
ouvrira simplement 100 lignes vierges. Ensuite, nous lançons une commande de substitution:
:% " 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)
.