Начиная с чистого листа, как я могу получить документ, который содержит
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)
.