有没有一种使用vim markdown编辑编号列表的简单方法?

时间:2017-02-06 20:27:44

标签: vim markdown

我们说我在markdown中有一个这样的编号列表:

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.

我希望能够快速完成此操作 - 例如,不必录制宏。

3 个答案:

答案 0 :(得分:1)

  • 这个:从第一行开始,按V4j选择这些行之后,您可以使用以下命令:

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

  • 或:将光标放在第一行并输入:

0 0。这是一个新的文本行。 Esc 0 Ctrl-v 4 j 按Ctrl-a

O :大写字母o( shift + o

0 :数字0

答案 1 :(得分:1)

有几种方法可以做到这一点。可能最简单的方法是添加一个以'0'开头的换行符。然后,当您对此列表感到满意时,可以使用vG<C-a>递增每个数字。 (当然,不是整个缓冲区都可以使用不同的动作,例如ip}

如果要多次添加一行,则在完成编辑后最后添加所有数字可能会更容易。这可以通过直观地选择您想要的行并进行g<C-a>来完成。

我不记得确切地添加了这些功能的时间,但这需要相对较新版本的vim。它适用于我8,我记得这适用于7.4正确的补丁。

如果您使用的是较旧版本的vim,则可以选择所需的行,并使用替换命令添加相应的数字。例如:

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

答案 2 :(得分:1)

完全不同的方法是不要担心手动编号。 Markdown doesn't care what numbers are in your source file,所以

1. Foo
1. Bar
1. Baz

呈现为

  1. 酒吧
  2. 巴兹
  3. 我通常使用1.对所有订购的列表进行编号,并让Markdown处理器负责实际编号。