原文轉自【http://my.oschina.net/captaintheron/blog/5157?from=rss】
很苦惱python這個東西是嚴格縮排的,但是我在linux下用vim下的py,預設tab是8個空格那麼長(其實還是一個tab,用set tabstop=4隻是把縮排量給改了,還是一個tab,拿到win下依然不正常。:set softtabstop=4
也是照舊,於是按照“外事不明上GOOGLE,內事不明上BAIDU,房事不明上TIANYA”的原則,google之。發現還可以設定set expandtab,這樣就可以用空格替代tab符,從而保證跨平台時縮排的一致性了。
以下是原文:
'tabstop' 在預設狀態下被設定為 8。儘管你可以改變它,但很快你就會遇到麻煩。其它
的程式不知道你用的定位字元間隔值是多少,你的檔案看起來會一下子改變許多。另外,很
多印表機都將定位字元間隔值固定為 8。所以最好還是保留 'tabstop' 值不變。(如果你編
輯使用其它定位字元間隔值的檔案,請參考 |25.3| 來修正。)
如果使用 8 個空格來縮排程式,你很快就會走到視窗的最右端;而用 1 個空格又看
不出足夠的差別。因此很多人喜歡用 4 個空格。這的確是個很好的折衷。
由於一個定位字元 (<Tab>
) 是 8 個空格,而你又想使用 4 個空格來縮排,這樣你就無
法使用定位字元來完成縮排。這裡有兩種解決辦法:
1. 混合使用定位字元和空格。由於一個定位字元佔用 8 個空格的位置,你的檔案會含有更少
的位元組數。插入或刪除一個定位字元也要比 8 個空格快很多。
2. 只用空格。這就避免了那些使用不同定位字元間隔值的檔案所帶來的麻煩。
幸運的是,Vim 能夠同時很好地支援這兩種方式。
混 合 使 用 空 格 和 制 表 符
如果你使用定位字元和空格的組合,你直接按正常情況編輯就行。Vim 預設狀態下,能夠很
好地處理這些情況。
通過設定 'softtabstop' 可以使工作變得更簡便。這個選項能使 <Tab>
看起來像是
被設定為 'softtabstop' 所指定的值,但實際上使用的確是定位字元和空格的組合。
當你執行下面的命令後,你每次按下 <Tab>
鍵,游標都會移動到下一個 "4 列" 邊
界:
:set softtabstop=4
當你在第一列按下 <Tab>
鍵後,4 個空格會插入到文本中;再次按下 <Tab>
鍵,Vim 會
先刪除那 4 個空格,然後再插入一個定位字元。Vim 會儘可能地使用定位字元,並輔以空格
填補。
刪除會以相反的方式進行。<BS>
鍵總是刪除 'softtabstop' 指定的數量。Vim 盡可
能地使用定位字元,而用空格來填補空隙。
下面的例子顯示了多次輸入定位字元然後使用 <BS>
的情況。"." 代表一個空格而
"------->" 代表定位字元。
輸入 結果
<Tab>
....
<Tab>
<Tab>
------->
<Tab>
<Tab>
<Tab>
------->....
<Tab>
<Tab>
<Tab>
<BS>
------->
<Tab>
<Tab>
<Tab>
<BS>
<BS>
....
另一種方法是使用 'smarttab' 選項。當它被設定,Vim 對每個在縮排行中的定位字元使用
'shiftwidth',而對在第一個非Null 字元後輸入的 <Tab>
使用真的定位字元。但 <BS>
鍵不
會像在 'softtabstop' 選項下那樣工作。
只 用 空 格
如果你不想在檔案中出現定位字元,可以設定 'expandtab' 選項:
:set expandtab
當這個選項被設定,<Tab>
鍵會插入一系列的空格。這樣你可以獲得如同插入一個定位字元
一樣數量的空格。但你的檔案中並不包含真正的定位字元。
退格鍵 (<BS>
) 每次只能刪除一個空格。這樣如果你鍵入了一個 <Tab>
,你需要鍵入
8 次 <BS>
才能恢複。如果你在調整縮排中,輸入 CTRL-D
會更快些。
制 表 符 與 空 格 的 相 互 轉 換
設定 'expandtab' 選項並不會影響已有的定位字元。如果你想將定位字元轉換為空白格,可以
用 ":retab" 命令。使用下面的命令:
:set expandtab
:%retab
Vim 會在所有縮排中使用空格而非定位字元。但是,所有非Null 字元後的定位字元不會受到影
響。如果你想要轉化這些定位字元,需要在命令中加入 !:
:%retab!
這不大安全。因為它也許會修改字串內的定位字元。要檢查這種情況是否存在,可以執
行:
/"[^"\t]*\t[^"]*"
這裡建議你不要在字串中直接使用定位字元。請用 "\t" 來替代,麻煩會少些。
將空格轉化為定位字元的命令則恰好相反:
:set noexpandtab
:%retab!
對vim的配置感興趣的朋友可以看下:
http://vcd.gro.clinux.org/doc/usr_toc.html#usr_toc.txt