2014-04-04 32 views
4

我有這種格式的一些CSS代碼:Vim的:從一個在線格式化CSS多線路

a { color: #333; background-color: #fff; } 
a:visited { color: #aaa; background-color: #555; } 

我想要得到它的格式如下:

a { 
    color: #333; 
    background-color: #fff; 
} 
a:visited { 
    color: #aaa; 
    background-color: #555; 
} 

是否有簡單的方法來做到這一點?我知道我可以寫一個宏來做到這一點,但我希望有一個更好/更簡單的解決方案。理想情況下,我希望能夠選擇線條並執行類似gq的操作。

+0

這看起來像是http://stackoverflow.com/questions/22212446/css-huge-one-line-file-indentation-doesnt-work的副本。事實上,@肯特在這裏的答案與我在那裏的答案非常相似。 – benjifisher

+0

也可能想看看http://stackoverflow.com/questions/1422866/using-vi-how-can-i-make-css-rules-into-one-liners這是相反的,但有有用的解決方案。我甚至從它做了一個小的摺疊腳本:https://gist.github.com/PeterRincker/9977119 –

回答

11

如果文件類型已經被設置爲CSS,你可以嘗試:

:%s/[{;}]/&\r/g|norm! =gg 

至少它爲你的例子:

enter image description here

+0

我喜歡這個! (可能比我的答案更多) - 雖然,我的vi只有每個塊的最後一個屬性被選中:-( – YFP

+1

正則表達式*所有*的東西 – Nit

+0

我會以同樣的方式做,除了我會使用兩個單獨的Vim的內部重新格式化只會改變縮進,它不會添加或刪除換行符,所以首先使用':s'來分割行,然後使用'gg = G'或等價物。在Ingo Karkat的回答中有一個外部程序 – benjifisher

3

您可以使用cssbeautify

:%! css-beautify --file - 
+1

如果你喜歡css-beautify的結果,那麼你可以使用它來代替vim的內部重新格式化。像':set equalprg = css-beautify'(未經測試)。見':help'equalprg''。 – benjifisher

0

不是明確的答案,而是t帽子可能會幫助你朝正確的方向發展。我使用了很多vim文件來檢查我的代碼(不同的語言),並且我發現使用插件可以複製我的代碼,並且可以很好地格式化它(例如,在執行python等時使用PEP-8)。 希望這將是一些使用到你:http://www.vim.org/scripts/script.php?script_id=2981

TotalOpinion - (對不起!) - 感謝您選擇所有編輯器之王!

+0

King需要女王... :) – Kent