我最近意识到过滤!技术,我很喜欢它。不幸的是,我无法在可视块模式下使用它。希望这里的专家能帮助我。
基本上,我想对列进行排序,例如下面的第三列(仅是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进行常规排序。