我正在尝试创建一个文本文档的目录:
以#(井号)开头的行将被“收集”到缓冲区中,或者可能放在文件的顶部。
(或者-其他想法-删除不以#开头的行在重复文件中的所有行) 一定有解决这个问题的方法...
(或者-其他想法-删除不以#开头的行在重复文件中的所有行) 一定有解决这个问题的方法...
我想你正在寻找:global
命令。
你可以使用:g/^#/p
命令查看所有以#
开头的行,并使用:redir
命令将它们放入一个文件中:
:redir > toc.txt
:g/^#/p
:redir END
set number
,则toc.txt
将包含行号。关于这个话题还有这篇文章。
或者,您可以使用:v
或:g!
删除所有未以#
开头的行,并将其保存到另一个文件中。
:v/\#/d
:w! toc.txt | undo
:global
将提供的命令应用于文件中按顺序出现的每个匹配行,因此:g/^#/t0
将标题复制到文件顶部,但是顺序相反。 我们可以使用:v/^#/m$
将所有非标题行移动到末尾,从原始文本中剥离标题并将其保留在顶部。另一种方法是放置一些标志来标记目录的结尾,并将标题行复制到此标志的上方一行:
:g/^#/t?end-toc?-1
redir
- 解决方案像我想的那样有效。行号有助于找到标记的行!太好了,谢谢!PS:redir
还可以复制到缓冲区(请参阅 vim 帮助)。 - Thomas D