2014-05-23 103 views
0

我有一個vim插件繪製類似於Sublime Text的縮進行,但它需要空白表示爲製表符。複雜的事情,從思想上來說,我認爲空間對於存儲庫來說更可取。Git簽出與標籤提交空格

所以,現在,我正在使用vim將空格轉換爲寫入選項卡,這在計算上很昂貴並且開始減慢編輯速度。

git是否可以將空格轉換爲檢出/抽取/合併選項卡並將標籤轉換爲空間預先提交?

感謝

+4

工具是工具,不要讓他們指定你的工作流程。尤其以眼睛糖果的名義。另外,[vim-indent-guides](https://github.com/nathanaelkane/vim-indent-guides)同時支持製表符和空格。 – romainl

+0

你的文件必須非常大,或者你的電腦速度很慢,只需要一個簡單的全局替換「放慢編輯速度」(而不是打開和寫入,不是嗎?!)你真的認爲Git /外部解決方案是那麼多更快?你是否真的將性能問題降低到了替代品上? (你怎麼做?) –

+1

Linux通常有兩個實用程序明確地爲此目的 - 稱爲'expand'和'unexpand' ... – twalberg

回答

4

你可以使用.gitattributes做到這一點,看到smudge/clean concept in the git book。您可以創建篩選器,在提交和結帳時轉換文件。

.gitattributes,配置哪些文件應該由你的過濾

* filter=spacetabs 

影響在命令行,告訴要用於過濾的文件中運行哪些腳本:

$ git config --global filter.spacetabs.clean tabs-to-spaces-script 
$ git config --global filter.spacetabs.smudge spaces-to-tabs-script 

另一種可能git hooks 。添加在提交和結帳時運行的轉換腳本。但.gitattributes可能更適合這種情況。

+0

.gitattributes是我的第一個想法,但沒有辦法定義一個過濾器的提交和另一個過濾器,是嗎? – seagoj

+0

@seagoj一個過濾器映射到兩個不同的腳本tab-to-spaces-script和spaces-to-tabs-script。 –

+0

@seagoj如果您要求過濾器在拉而不是結帳時運行,那不是非常必要。一旦檢查完成,您只關心文件的外觀。 –