Zaczynając od pustej tablicy, jak mogę uzyskać dokument zawierający
1
2
3
4
5
6
7
8
9
10
…
100
Żeby było jasne, nie chcę, aby te liczby były wyświetlane na marginesie; Chcę je wstawić do samego dokumentu.
Zaczynając od pustej tablicy, jak mogę uzyskać dokument zawierający
1
2
3
4
5
6
7
8
9
10
…
100
Żeby było jasne, nie chcę, aby te liczby były wyświetlane na marginesie; Chcę je wstawić do samego dokumentu.
Odpowiedzi:
Użyj :put
i range()
:
:put =range(1,100)
Aby uniknąć pustej linii u góry (od kudos do romainl ), użyj :0put
:
:0put =range(1,100)
Oprócz czystego vima Undo :put =range(1,100)
(który faktycznie pozostawia pustą linię do góry), możesz, w zależności od systemu operacyjnego, użyć jednego z jego poleceń. Na przykład na komputerze z systemem Unix / Linux:
%!seq 1 100
Powyższe działa poprzez przesłanie całego (pustego) bufora do seq
, który ignoruje jego dane wejściowe i po prostu wypisuje liczby od 1 do 100. Vim następnie zastępuje cały bufor danymi seq
wyjściowymi.
Jest to przydatne, gdy znasz już sposób wiersza polecenia, aby uzyskać to, czego chcesz.
Dla przypomnienia i zdecydowanie nie najkrótszej drogi (zobacz niesamowite rozwiązanie @ Undo), ale sekwencja klawiszy też to zrobi:
i1EscqaYpCtrl+aq98@a
Pozwól, że ci to podzielę:
i1<Esc>
- wstaw cyfrę 1, a następnie wróć do trybu poleceńqa
- zacznij rejestrować makro w rejestrze „a”Y
- skopiuj bieżącą linięp
- wklej bieżącą linię (kursor również przejdzie do wklejonej linii)<Ctrl>a
- zwiększ kolejny numer na linii, dzięki czemu będzie to 2q
- zatrzymaj rejestrowanie makra (był rejestr „a”)98@a
- powtórz makro w rejestrze „a” 98 razyOto inne podejście, które wymaga nowszego Vima (coś w rodzaju 7.4.800)
Zakłada to, że pusty bufor i „1” w rejestrze a. Najpierw wprowadź 100 1 do swojego bufora "a100P.
Następnie wizualnie wybierz linie od 2 do 100 :2EnterVG.
Teraz naciśnij gCtrl+ A.
Przeczytaj pomoc na :h v_g_CTRL-A
:h g_CTRL-A
Wiem, że to pytanie jest naprawdę stare, ale jest też inny sposób, aby to zrobić. Spróbuj tego:
99o<esc>:%s/^/\=line('.')<cr>
99o<esc>
otworzy tylko 100 pustych linii. Następnie uruchamiamy polecenie zastępcze:
:% " 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)
.