本当に重要なことの 1 つは、追跡するコンテンツを標準化することです。あなたと他の開発者は、そこで何かに同意する必要があります。合意された標準以外のことをしたい場合は、結果がまちまちになる可能性があります。前後にきれいに変換できるとは限りません。
私は本当にそれを扱うことをお勧めします。私はタブとスペースについて独自の意見を持っており、それぞれを使用してコードに取り組んできました。最善の方法は、エディタを標準化されたスタイルに合わせて設定し、それに合わせることです。vim では、expandtab をオフにし、タブストップを好きなものに設定します。
それでも試してみたい場合は、主に 2 つの方法があります。
Vim で自動コマンドを使用して、読み取り/書き込み時に変換します。BufReadPost
おそらく、、、BufWritePre
およびが必要ですBufWritePost
。(書き込みの場合は、標準に変換し、Vim に書き込みさせてから、編集したい方法に変換します。) タブストップが好きなように設定されていることを確認してから、次のようにします (テストされていません):
set tabstop=4
autocmd BufReadPost * set expandtab | retab
autocmd BufWritePre * set noexpandtab | retab!
autocmd BufWritePost * set expandtab | retab
これ*
が適用されるファイルパターンです。編集するすべてのものでこれが起こらないようにするために、それを台無しにするか、特定のディレクトリ内のファイルの自動コマンドのみを追加する必要がある場合があります。これは危険であることに注意してください。たとえば、文字列内のリテラル タブ文字を置き換えます。
- Git の smudge/clean フィルターを使用します。
man gitattributes
それらについては、またはPro Gitで読むことができます。それらを使用して編集用に変換し、コミット用に標準に戻すことができます。奇妙なインデントがまったくない場合は、先頭のタブをいくつかのスペースに変更し、先頭のスペースをそのタブ数の一部に変更するのと同じくらい簡単かもしれません. sed/perl/indent など、使い慣れたものを使用してください。