我最近意识到过滤!
技术,我很喜欢它。不幸的是,我无法在可视块模式下使用它。希望这里的专家能帮助我。
基本上,我想对列进行排序,例如下面的第三列(仅是MWE)。而且我不想在排序时打扰其他列。
我尝试!
通过sort
实用程序过滤()可视(块模式)选择的第三列。但是排序实际上超出了选择范围,也就是说,所有行都被交换,而不仅仅是选择范围,这也是基于第一列的!
1. LARGEST 40
2. SECOND-LARGEST 168
3. MID 2.8
4. MID 540
5. MID 14.84
6. MID 40
7. SECOND-LEAST 64
8. LEAST 8
我使用可视块选择了最后一列,并说!sort --reverse
显示为
'<,'>!sort --reverse
结果与我的预期相反。结果将对整个行进行排序/交换,而不仅仅是一行,而且也基于第一列,无论我选择的是第三列!
8. LEAST 8
7. SECOND-LEAST 64
6. MID 40
5. MID 14.84
4. MID 540
3. MID 2.8
2. SECOND-LARGEST 168
1. LARGEST 40
除非另有可能,否则我将需要一个纯粹的vim + sort解决方案,而不是相对高级的工具sed
/ awk
。更重要的是要了解自己,与视觉模式相比,视觉阻挡模式的局限性如何。
过滤器仅可在线使用。
—
romainl
@Dalker是的,谢谢。但是我已经尝试过了,结果也差不多。
—
Loves Probability
@romainl是吗?没有希望的光芒?我很少发现Vim会发生这种情况!但无论如何,这不是很奇怪地说“在过滤器上唯一的工作线,你选择了别的东西,直到输出没有任何问题的迹象后”?如果它没有弹出警告/错误,我什至会认为这是一个错误。
—
Loves Probability
sort
命令可用,因此您无需调用外部命令即可!sort
进行常规排序。