2014-11-04 70 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可能是