2011-12-13 65 views
7

是否有人以使用硬標籤作爲縮進字符的方式進行vim設置,但確實使用空格進行對齊?我的問題是,開始連續行像Vim:使用製表符縮進,使用C源文件對齊空格

if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */ 
|-------|------- whatever /* some additional alignment added automatically */ 

,然後cin(這對我來說是必須的),增加了一些調整原來的樣子時,我更喜歡位置上,但使用如創建這種對齊儘可能多的硬標籤,並用空格填充其餘部分(如我試圖想象的那樣)。

因此,簡而言之,cin並沒有真正似乎壓痕對準區分。我真的很喜歡上面例子中所有添加的對齊方式都是空格。這樣,臨時切換ts時對齊方式將被正確保存。

要使其再次明確,我希望能夠寫出下面的代碼,從來沒有在任何壓線<TAB><SPACE>在第一個非空字符的前(和沒有做任何手動換檔或其他) :

void foo(int bar) 
{ 
|-------somestatement; 
|-------if (somecondition && (someothercondition || 
|-------      whatevercomesnext)) 
|-------|-------dosomething; 
} 

我已經嘗試了ctab.vim,但它着重於編輯軟標籤對齊線,這似乎是愚蠢的我,因爲手工校準是得到1步細化,而不是製表任務寬步驟細化。我沒有改變cin使用混合製表符和空格進行對齊的方式。

我還沒有設法找到任何內置的方式來實現這一點。也許還有一個呢?無論如何,我懷疑有一個插件可以做到這一點。雖然我承認自己沒有vim腳本,並且可能沒有足夠的經驗,但我必須說,我嘗試使用的大多數插件只會搞亂我的編輯器配置......

+0

我使用`ctab.vim`我自己(版本2.6),它似乎做你想達到的目的,即當在上面的代碼片段中鍵入時,我沒有必須鍵入任何製表符或空格字符才能正確格式化 – ekoeppen 2013-01-15 08:19:54

回答

1

好的,對於問題抱歉。我終於找到了一些很好的材料。

http://vim.1045645.n5.nabble.com/Indent-with-tabs-align-with-spaces-td1183279.html

綜上所述,目前VIM不夠靈活爲此得到輕鬆完成。

我的解決方法當前使用的是:set cinoptions=(1,它在啓動延續線時僅添加一個對齊單位。這樣,我可以確定添加的對齊是一個空間(只要我沒有:set ts=1,至少),並手動添加好的空間量。這在速度方面仍然可以,並且對我來說似乎是最不分心的行爲!

+0

您可以將自己的答案標記爲已接受! – 2011-12-14 01:26:02

3

除了你的:set cino =(1,如果你還沒有遇到過,你也可能對'preserveindent'和'copyindent'選項感興趣,但它們並不能完全解決你的問題,但它們

+0

是的,我遇到了它們但遺憾的是還有更多的規則可以計算縮進和用混合標籤/空格縮進... – 2011-12-13 22:19:07

相關問題