Vim 按“排序行”;标签;并将输出附加到行之后

Vim 按“排序行”;标签;并将输出附加到行之后,vim,Vim,我刚刚发布了一个问题,并收到了El Isra、Romaill和Zyx的回答,他们解决了这个问题 但我突然想到(从待办事项列表的角度来看),以特定的方式显示结果可能会很有趣,即按类别(或“标签”)创建视图 结果是: Call Tom about the Foo project @Tom &Foo Complete the summary of the Bar project and send it to Thomas &Bar @Tom Have Susan send me and

我刚刚发布了一个问题,并收到了El Isra、Romaill和Zyx的回答,他们解决了这个问题

但我突然想到(从待办事项列表的角度来看),以特定的方式显示结果可能会很有趣,即按类别(或“标签”)创建视图

结果是:

Call Tom about the Foo project @Tom &Foo
Complete the summary of the Bar project and send it to Thomas &Bar @Tom
Have Susan send me and Tom her forecasts for the Foo project @Susan @Tom &Foo
在Vim中,是否可以按类别(或“标签”)在行后显示这些结果(用空行分隔):


事实上,我记得这就是“视图”进行的方式,尽管以一种更复杂的方式…

即使在Vim中也可以这样做,我认为这样的任务最好用另一种编程语言来完成,以实现解耦:Vim脚本只用于增强编辑器的部分功能。这就是为什么Vim没有内置的
sort
命令的原因(更新:它现在在Vim 7中实际有):因为该命令执行的任务与其他编辑器/命令结合使用时也很有用

如果您创建一组Python/Perl脚本来为您执行此文本处理(可以说是比Vimscript更好的文本处理语言),那么将它们与Vim结合起来就很容易了,例如:

:%!python myscript.py

将当前缓冲区的全部内容发送到
myscript.py
,并用结果替换缓冲区。您还可以查看
:帮助阅读

即使可以在Vim中实现这一点,我认为为了解耦,最好在另一种编程语言中完成这些任务:Vim脚本仅用于增强编辑器的某些功能。这就是为什么Vim没有内置的
sort
命令的原因(更新:它现在在Vim 7中实际有):因为该命令执行的任务与其他编辑器/命令结合使用时也很有用

如果您创建一组Python/Perl脚本来为您执行此文本处理(可以说是比Vimscript更好的文本处理语言),那么将它们与Vim结合起来就很容易了,例如:

:%!python myscript.py

将当前缓冲区的全部内容发送到
myscript.py
,并用结果替换缓冲区。您还可以查看
:帮助阅读

我认为您实际上不希望将这些分组结果插入到原始todo文件中,而是希望有一个经过筛选的单独列表。为此,快速修复列表非常理想

我将编写一个函数,对传递的类别列表进行迭代,并对todo列表执行
:vimgrepad
命令,从而产生以下调用:

:vimgrep /@Tom/ %
:vimgrepadd /@Susan/ %
:vimgrepadd ...

这将获取快速修复列表中按类别分组的所有事件,您可以通过
:copen
打开该列表。现在,仍然缺少的是任何类别的分离。您可以使用
setqflist()
插入分隔符行,但我可能会在每个
:vimgrep
之后存储quickfix元素的数量,然后构建一个自定义
'foldexpr'
,使用这些行号折叠每个类别。这需要一些实现工作,但您要求的内容超出了通常的文本编辑领域。

我认为您实际上不希望将这些分组结果插入到原始todo文件中,而是需要一个经过筛选的单独列表。为此,快速修复列表非常理想

我将编写一个函数,对传递的类别列表进行迭代,并对todo列表执行
:vimgrepad
命令,从而产生以下调用:

:vimgrep /@Tom/ %
:vimgrepadd /@Susan/ %
:vimgrepadd ...

这将获取快速修复列表中按类别分组的所有事件,您可以通过
:copen
打开该列表。现在,仍然缺少的是任何类别的分离。您可以使用
setqflist()
插入分隔符行,但我可能会在每个
:vimgrep
之后存储quickfix元素的数量,然后构建一个自定义
'foldexpr'
,使用这些行号折叠每个类别。这需要一点实现工作,但您要求的内容超出了通常的文本编辑领域。

似乎您正在尝试在Vim中管理待办事项列表。您是否尝试过todo或组织模式插件?另外,最好使用一个已经提供了所有这些排序和报告功能的独立应用程序。我极力推荐,它有一个Bash/Cygwin CLI、移动设备和许多本机客户端。当然,这对todo列表很有用,但在许多其他方面也很有用。假设我写(我根本不编码)一个家庭(或小说)的历史:x个角色,y个地方,z年。能够不时地验证事情是否合乎逻辑和连贯,这将是一件有趣的事情。当然,有专门的工具来实现这一点,但是你看,我很欣赏Vim的方式(前几天你提醒我了…)。另一个原因是,我真的很喜欢莲花议程的方式。我希望这能回答您的合理评论。看来您正在尝试在Vim中管理todo列表。您是否尝试过todo或组织模式插件?另外,最好使用一个已经提供了所有这些排序和报告功能的独立应用程序。我极力推荐,它有一个Bash/Cygwin CLI、移动设备和许多本机客户端。当然,这对todo列表很有用,但在许多其他方面也很有用。假设我写(我根本不编码)一个家庭(或小说)的历史:x个角色,y个地方,z年。能够不时地验证事情是否合乎逻辑和连贯,这将是一件有趣的事情。当然,有专门的工具来实现这一点,但是你看,我很欣赏Vim的方式(前几天你提醒我了…)。另一个原因是,我真的很喜欢莲花议程的方式。我希望这能回答你的合理评论;特定于域的工具(无论是