2014-11-04 50 views
3

我知道在vim中通过编译命令sort可以很容易地进行排序操作。 但如何水平排序该行内的一行和文本?VIM中的排序行(水平)

例如从这一点(aaa ccc bbb) 到这个(aaa bbb ccc)

我试过vi(:sort但它没有帮助我。有什么建议么?

+0

它是否帮助有用吗? http://stackoverflow.com/questions/1327978/sorting-words-not-lines-in-vim – freude 2014-11-04 16:14:42

回答

4
:s/\s\+/\r/g " break the line into multiple ones 
:'[,sort  " sort them 
:,']j   " join them 
+0

+1,但我不得不删除'*'使其工作。 '*'匹配所有字符,而不仅仅是重复'\ s'。我认为这可能是一个设置,但用'-u NONE'开始vim也没有帮助。使用'\ v \ s +'为我工作。我最终使用的命令是'/ \ v \ s +/\ r/g |'[,sort |,'] j' – 2014-11-04 21:25:20

+0

@LievenKeersmaekers,您对'*'说得对,感谢您发现我的错误。实际上,'\ s *'不匹配所有字符:匹配*零个或多个*空白字符,这是一个零宽度匹配,对应于字符之间的每个“空格”。发布答案时,我清楚地思考了其他事情。 – romainl 2014-11-04 21:50:13

+0

哈哈,谢谢,但我没有发现任何东西。我实际上认为这是我*(最近改变)* vim安装的一个错误。 – 2014-11-04 22:50:38

1

这不是微不足道的,但是,是的,人们总是可以将行分成许多行,排序并组成单行。

link可能是