2011-07-23 71 views
3

考慮用於對齊CSS規則屬性的Tabularize vim插件。例如vim Tabularize:如何忽略包含大括號的行

body { 
    margin: 0; 
    padding: 0; 
    font-family: arial, verdana; 
} 


在用光標VIM規則內vi{:Tab /:\zs導致

body { 
    margin:  0; 
    padding:  0; 
    font-family: arial, verdana; 
} 


我想如圖實現這一Tabularization整個CSS計算,而不是每個塊。

通過:%Tab \:\zs規則名得到佔左列寬度,這是不可取的。

一些CSS規則包含幾個:,所以我的問題是如何忽略包含大括號的行?

回答

3

請嘗試下面列出的命令。

:%g/:.*{/s/^/:/ | exe'%Tab/^[^:]*:\zs' | %s/^:\s*// 

可以將此命令映射到一個快捷方式,或保存的CSS文件 過程中自動運行它。

:au BufWrite *.css %g/:.*{/s/^/:/ | exe'%Tab/^[^:]*:\zs' | %s/^:\s*// 
+0

@Eric:我改變了啓發式方法來解決選擇器的問題。請注意,這可能會影響包含冒號的註釋(更確切地說,在一行註釋中的第一個冒號後間隔),很難。 –

+0

@ib這正是我需要的,謝謝 –

1

這裏可以使用全局命令。我沒有Tabularize,所以我的版本只是縮進所有的CSS塊:

:%g/^.*{/+ | .,/}/-> 

的最後一個命令後,「|」是ex模式命令,用於將塊從當前位置(每個開口大括號之下的一行)縮進到右大括號的上方。根據你所說的,我期望這個工作,但我沒有嘗試過:

:%g/^.*{/+ | Tab /:\zs 
+0

Tab的那個方面是完全內部的,所以沒有多少希望。但它似乎不是一個很難寫的腳本。這將不得不做兩個通行證,一個找到正確的列,另一個做對齊。如果你不熟悉腳本,這將是一個很好的項目。如果你想讓我這樣做,只需添加一個賞金! :-) –