使用Vim按行块对文本进行排序

3

我可以在vim中将行按部分排序而不是整个行吗? 例如

My Name is Deus Deceit

我想根据名称起始列加6列进行排序,例如按第19-25列进行排序,Vim仅检查这些字符以进行排序。如果不需要插件就能实现的话那就太好了。谢谢。

1个回答

7

请查看:help :sort。该命令接受一个选项{pattern},其匹配的文本将被跳过(即在匹配之后进行排序)。

例如,要按第19列及以上的内容进行排序(请参见:help /\%c和相关的正则表达式原子):

:sort /.*\%19c/

2
感谢指针的帮助!也许 :sort r /\%19c.*\%25c/ 是一个改进? - Niloct
问题是我不想只是输入一个我完全不知道如何工作的命令。你能在那一行中添加解释吗?这将非常有帮助,理解它将使我能够在各种情况下再次执行它,而不是回到论坛并使用不同的值键入相同的问题。我知道对于不同的情况需要更改哪些值是显而易见的,但我想你明白我的意思。谢谢。 - Not Amused
2
r 表示按正则表达式模式排序(在 // 内)。该模式匹配第 19 列和第 25 列之间的所有内容(即第 19 列为 \%19c,而 .* 捕获这些列之间的内容)。 - Niloct
你能告诉我在哪里可以找到所有 %19c 或 .* 等的文档吗? - Not Amused
1
两天后,自定义排序已经是一个相当高级的话题了 :-) 专业提示:学习内置的:help如何组织、如何导航以及阅读阅读阅读。它非常有用和详细;我已经在我的答案中包含了指针。并且要对Vim有耐心;使用Vim十多年后,我每天仍然在学习新东西... - Ingo Karkat
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接