Nie jest dla mnie całkowicie jasne, co chcesz, ale w Vimie możesz zrobić coś takiego:
:for i in range(line('$')) | call append(i+i, printf("this is line %d:", i+1)) | endfor
Powód, dla którego używam i+i „jest tak, ponieważ linie są wstawiane do bufora, numery linii zmieniają się, a to poprawia to. (Jeśli masz inny„ punkt początkowy ”w swoim zakresie, twój algorytm korekty będzie musiał być bardziej skomplikowany.)
Lub jeśli chcesz zmodyfikować istniejące linie w buforze:
:for i in range(1, line('$')) | call setline(i, printf("this is line %2d: %s", i, getline(i))) | endfor
Oczywiście, jeśli nie chcesz zmieniać bufora, ale po prostu wydrukujesz na ekranie, użyj „echo” zamiast „wywołania” i usuń fragmenty append () / setline () z całego printf ().
Idealny; Dziękuję Ci. Przepraszam, że nie jestem zwięzły, ale twój drugi przykład kodu zrobił dokładnie to, co chciałem. Ponieważ jestem nowy, nie mogę go głosować, ale zrobię to, kiedy będę mógł.
doubleshot
Oczywiście istnieje inny, prawdopodobnie prostszy sposób:% s / ^ / \ _ printf („To jest linia% d:”, linia („.”)) / /
Heptite
1
W Emacs spróbuj:
M: (dotimes (i 3) (insert (format "This is line %2d.\n" (1+ i))))
W Emacs spróbuj:
Tutaj
M:
oznaczaeval-expression
źródło
Alt + :