假设我在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.
有没有一种简单的方法可以为数字 1 插入一个新行并使用 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.
我希望能够快速完成此操作 - 例如,不必录制宏。
一种完全不同的方法是根本不担心手动编号。Markdown 不关心源文件中的数字,所以
1. Foo
1. Bar
1. Baz
渲染为
- 傅
- 酒吧
- 巴兹
我通常用1.
对所有订购列表进行编号,并让 Markdown 处理器负责实际编号。
几种方法可以做到这一点。可能最简单的方法是添加以"0."开头的换行符。然后,当您对此列表感到满意时,您可以使用 vG<C-a>
递增每个数字。(当然,这不是您可以使用不同动作(例如ip
或}
(的整个缓冲区(
如果要多次添加一行,则在完成编辑后将末尾的所有数字相加可能会更容易。这可以通过直观地选择您想要的行并执行g<C-a>
来完成。
我不记得这些功能的确切添加时间,但这需要一个相对较新的 vim 版本。它在 8 中对我有用,我记得这适用于带有正确补丁的 7.4。
如果您使用的是旧版本的 vim,则可以选择所需的行并使用替换命令添加适当的数字。例如:
:s/^/=(line('.') - line("'<") + 1).'. '
-
这:您可以在选择这些行后使用以下命令,方法是从第一行开始
V4j
:
:'<,'>s/d/=submatch(0)+1/ | normal! goO1. This is a new line of text.
- 或者:将光标放在第一行并键入:
O0.这是一行新文本。Esc0 Ctrl-v 4jCtrl-a
O :大写字母 o (shift+o(
0 : 数字 0