Могу ли я предоставить в Vim строку форматирования, восстановить ее и вставить в нее отформатированные значения в диапазоне? Пример в Python 2 будет:

для i в диапазоне (1, 3): выведите «Это строка% d»% i

Если это невозможно в Vim, будет ли это в Emacs или другом редакторе?

2 ответа2

1

В Emacs попробуйте:

M: (dotimes (i 3) (insert (format "This is line %2d.\n" (1+ i))))

Здесь M: обозначает eval-expression

0

Мне не совсем понятно, что вы хотите, но в Vim вы можете сделать что-то вроде этого:

:for i in range(line('$')) | call append(i+i, printf("this is line %d:", i+1)) | endfor

Причина, по которой я использую « i+i », заключается в том, что при вставке строк в буфер номера строк меняются, и это исправляет это. (Если у вас есть другая "начальная точка" в вашем диапазоне, ваш алгоритм коррекции должен быть более сложным.)

Или, если вы хотите изменить существующие строки в буфере:

:for i in range(1, line('$')) | call setline(i, printf("this is line %2d: %s", i, getline(i))) | endfor

Конечно, если вы не хотите менять буфер, а просто печатаете на экран, используйте "echo" вместо "call" и удалите куски append() / setline() со всех сторон printf().

Увидеть:

:help :for
:help :call
:help :echo
:help range()
:help line()
:help append()
:help setline()
:help getline()
:help printf()

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .