Начиная с чистого листа, как я могу получить документ, который содержит
1
2
3
4
5
6
7
8
9
10
…
100
Чтобы было ясно, я не хочу, чтобы эти цифры отображались на полях; Я хочу, чтобы они были вставлены в сам документ.
Начиная с чистого листа, как я могу получить документ, который содержит
1
2
3
4
5
6
7
8
9
10
…
100
Чтобы было ясно, я не хочу, чтобы эти цифры отображались на полях; Я хочу, чтобы они были вставлены в сам документ.
Ответы:
Используйте :putи range():
:put =range(1,100)
Чтобы избежать пустой строки вверху ( слава romainl ), используйте :0put:
:0put =range(1,100)
В дополнение к Undo pure-vim :put =range(1,100)(который фактически оставляет пустую строку вверху), вы можете, в зависимости от вашей ОС, использовать одну из ее команд. Например, на коробке Unix / Linux:
%!seq 1 100
Вышеприведенное работает путем передачи всего (пустого) буфера в seq, который игнорирует его ввод и просто выводит числа от 1 до 100. Затем Vim заменяет весь буфер на seqвывод '.
Это полезно, когда вы уже знакомы с некоторым способом командной строки, чтобы получить то, что вы хотите.
Для записи, и определенно не самый короткий путь (см. Потрясающее решение @ Undo), но последовательность нажатий клавиш также сделает это:
i1EscqaYpCtrl+aq98@a
Позвольте мне разобрать это для вас:
i1<Esc> - введите номер 1, затем вернитесь в командный режимqa - начать запись макроса в регистр "а"Y - скопировать текущую строкуp - вставить текущую строку (курсор также переместится на вставленную строку)<Ctrl>a - увеличить следующий номер в строке, сделав его равным 2q - прекратить запись макроса (был регистр "а")98@a - повторить макрос в регистре "а" 98 разЗдесь другой подход, который требует более нового Vim (что-то вроде 7.4.800)
Это предполагает пустой буфер и '1' в регистре a. Сначала введите 100 1 в буфер, "a100P.
Затем визуально выделите строки от 2 до 100 :2EnterVG.
Теперь нажмите gCtrl+ A.
Прочитайте помощь на :h v_g_CTRL-A
:h g_CTRL-A
Я знаю, что этот вопрос действительно старый, но есть и другой способ сделать это. Попробуй это:
99o<esc>:%s/^/\=line('.')<cr>
99o<esc>просто откроет 100 пустых строк. Затем мы запускаем команду замены:
:% " 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).