2011-07-19 5 views
1

Vimでインデントするためにスペースを使用する際に問題があります。多くのプロジェクトのコーディングガイドラインでは、タブではなくスペースを使用してコードをインデントする必要があります。けっこうだ。しかし、自分のコードを使って作業しているときに、好みのシフト幅を見て使用する方法はありますか?例えば、コードのこの部分は、8つのスペース使用してインデントされスペースでインデントしても、Vimでの優先シフト幅を使用していますか?

function foo() { 
     return 'foo'; 
} 

私はVimのでこれを開くと、それは、この(ずらし幅として(編集するための、およびインデント)を表示する、ことをどのような方法はあります

function foo() { 
    // edited to add this comment 
    return 'foo'; 
} 

しかし、私はそれを保存するとき、それは)そう(8つのスペースのインデントのように保存された:

function foo() { 
     // edited to add this comment 
     return 'foo'; 
} 

ティ4)のあなたがインデントするためにタブを使うと、非常に自然に起こります。ただあなたのshiftwidthを調整し、あなたが個人的に好むインデントを編集することができます。しかし、今日のほとんどのプロジェクトでは、スペースを使用してインデントする必要があります。個人的に好みのシフト幅でファイルを編集することは不可能ですが、スペースを使用するときはプロジェクトのインデントのガイドラインに従ってください。

+0

関連:[タブをスペースに置き換える方法?](http://vi.stackexchange.com/q/495を/ 467)Vim SE – kenorb

答えて

2

retabのvimヘルプを参照してください。それはあなたが求めていることをする例を持っています。

場合、あなたは私が行うのと同じvimのヘルプファイルがありません。

             *retab-example* 
Example for using autocommands and ":retab" to edit a file which is stored 
with tabstops at 8 but edited with tabstops set at 4. Warning: white space 
inside of strings can change! Also see 'softtabstop' option. > 

    :auto BufReadPost  *.xx retab! 4 
    :auto BufWritePre  *.xx retab! 8 
    :auto BufWritePost *.xx retab! 4 
    :auto BufNewFile  *.xx set ts=4 
+1

で 'retab'はアラインメントについて何も知らないので、このように使用されたときにはそれを損ないます。コミットフックでタブを使い、 'expand'(私は/ usr/bin/coreutilsから展開することを意味します)を良くするべきです。 – ZyX

関連する問題