2017-02-06 9 views
0

Скажем, у меня есть нумерованный список, как это в уценки:Есть ли простой способ редактировать нумерованный список с помощью утилит vim?

1. This is a line of text. 
2. This is a line of text. 
3. This is a line of text. 
4. This is a line of text. 

есть простой способ, чтобы вставить новую строку номер один и добавьте ко всем другим линиям с помощью Vim? Это то, что я хочу добиться:

1. This is a new line of text. 
2. This is a line of text. 
3. This is a line of text. 
4. This is a line of text. 
5. This is a line of text. 

Я хочу, чтобы иметь возможность сделать это быстро - не имея для записи макроса, например.

+0

Включает ли этот список весь буфер? Это упростит – DJMcMayhem

+0

@DJMcMayhem нет, это часть README, которую я редактирую. – YPCrumble

ответ

1

Совершенно другой подход - не беспокоиться о нумерации вручную.Markdown doesn't care what numbers are in your source file, так

1. Foo 
1. Bar 
1. Baz 

Визуализирует в

  1. Foo
  2. Бар
  3. Баз

Я обычно число всех моих упорядоченных списков с 1. и пусть процессор Markdown позаботится фактической нумерации.

+1

Мне нравится, когда ответ говорит мне делать меньше, чем я делал раньше :). – YPCrumble

1
  • Это: Вы можете использовать команду ниже после выбора этих строк по V4j, начиная с первой строки:

:'<,'>s/\d/\=submatch(0)+1/ | normal! goO1. This is a new line of text.

  • Или: Поместите курсор на первой строке и тип:

O 0. Это новая строка текста. EscCtrl-VJCtrl-A


О: письмо о капитальных случае (сдвига + о)

: digit 0

+0

Meninx Что такое Ctrl-a? Это именно то, что я искал :). – YPCrumble

+0

'ctrl-a' добавляет +1, а' ctrl-x' - -1 в обычном режиме для чисел, но вы можете использовать его также для букв альфа. –

1

Существует несколько способов сделать это. Вероятно, самым простым способом является добавление новой строки, начинающейся с «0.». Затем, когда вы довольны этим списком, вы можете увеличить каждый номер с vG<C-a>. (Конечно, это не весь буфер, вы можете использовать другое движение, такое как ip или })

Если вы собираетесь добавить строку много раз, возможно, было бы проще добавить все числа в конце, когда вы закончили редактирование. Это можно сделать, визуально выбрав нужные строки и сделав g<C-a>.

Я не помню точно, когда эти функции были добавлены, но для этого требуется относительно новая версия vim. Это работает для меня в 8, и я помню, что это работало на 7.4 с правильными патчами.

Если вы используете более старую версию vim, вы можете выбрать нужные строки и использовать команду substitute для добавления соответствующих номеров. Например:

:s/^/\=(line('.') - line("'<") + 1).'. '