2013-04-06 37 views
1

我使用Vim的SmartTabs插件來將C代碼與選項卡一起縮進到縮進級別,然後在空間之後進行對齊。它的東西的偉大工程一樣if語句中的Vim智能選項卡

void fn(int a, 
________int b) { 
--->... 

標籤是--->,空間是_。但它似乎沒有工作這麼好情況下,像

--->if(some_variable > 
--->--->some_other_variable) { 
--->... 

在上述情況下,Vim插入的在括號內的第二行選項卡。有沒有一種方法可以讓我改變什麼Vim看到的延續線,包括像這樣的情況,所以我得到:

--->if(some_variable > 
--->___some_other_variable) { 
--->... 
+0

我沒有答案,但我確實有一個強烈的意見:請幫助自己,並且不要再次在源代碼中使用選項卡。標籤已死。特別是在這種情況下,對於與您具有相同Tabstop設置的人來說,它只會看起來很好。 – 2013-04-06 00:17:08

+2

@JimStewart Eh?智能標籤恰恰是不同標籤頁問題的解決方案。這個想法是使用標籤到縮進級別,然後使用空格來對齊文本。每個縮進選項卡可以擁有儘可能多的空格,但文本對齊需要精確數量的空格。 – 2013-04-06 00:40:09

回答

0

如果有一個凹陷的風格,既能允許根據靈活的壓痕寬度一個人的喜好,並一致對齊,你的建議方案就是這樣。不幸的是,這種風格需要對底層語法有一些基本的瞭解(例如,some_other_variable是否是條線(→Spaces)的一部分或條件(→Tab中的)函數調用),這使得實現起來很困難。

我不知道任何現有的Vim插件。 'copyindent''preserveindent'選項有一點幫助,但基本上你必須自己(並且可能:set list來驗證)明確地插入非縮進與空間

我不知道其他編輯,但其他大多數低級代碼編輯器的情況是相似的。如果沒有良好的自動支持,這種優雅的風格將難以被接受。我很想看到Vim的這樣一個插件。

+1

該插件似乎支持以','結尾的行。我想知道這是否可以擴展到以任何運營商爲終點的線路。或者甚至可能是結束於括號內的行。是的,語法知識是必要的,但語法高亮也是如此,我們管理得很好! – 2013-04-07 01:02:02