如何在vim中实现自动列表编号?


11

合同等正式物品需要编号清单。

1. Some text

2. More text

 2.1. Sub-section text

等等

关键是消除在插入或删除列表项时的手动重新编号。这可能vim吗?列表编号的一致性确实很难手动跟踪。

与此相关的目标之一是通过非混淆的存储格式(例如明文)来实现适当的修订控制。


1
如果可以接受PDF,则可以使用未编号的列表标记来标记列表项,asciidoc并且以后可以使用该标记将标记转换为带有行号的PDF。但是我也想知道如何使用vim对纯文本文件进行自动行编号。
2015年

1
这是文字处理器非常擅长的事情。
romainl

@Wildcard PDF确实可以接受,唯一的问题是初始的匿名标记使在文档中引用特定编号的项目变得困难。但是,您的方法绝对总比没有好。
lkraav 2015年

使用某种形式的markdown是否可以接受,然后使用ex-mode命令自动将其转换/未转换?例如,在顶级列表项前面加上- ,在第二级列表项前面加上-- ,等等。请参阅我最近有关在Ex模式下进行连续编号的起点的问题。
2015年

由于选件稀少,因此无济于事。
lkraav

Answers:


1

我有一个可以(部分地)为您提供帮助的插件:lazyList(没有自动列表编号)。

在以下示例中(_是光标位置)...

1. Some text
2. More text   
 Sub-secti_on text
 Sub-section text   
 Sub-section text

...只需执行以下命令:LazyList '2.%1%. '即可:

1. Some text
2. More text   
 2.1. Sub-secti_on text
 2.2. Sub-section text   
 2.3. Sub-section text

要删除索引,请执行相同的命令。

默认情况下,索引被添加到当前段落(相同的缩进或被空行包围),但是您可以将它们添加到可视选择中。

一个适合您情况的好方法:

  1. 添加索引
  2. 在添加新元素之前,请删除索引。
  3. 添加新元素后添加索引。

该视频应更明确。

插件的坏处在于它没有考虑到带有空行的可视选择,我应该重新考虑这种行为。

PS英语不是我的母语,所以请原谅错误。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.