1

私は (Python のバックグラウンドがあるため) タブの代わりにスペースに慣れてきた Vim ユーザーです。私は、Windows IDE を使用し、本当にタブを使用したい別の開発者と一緒に PHP プロジェクトに取り組んでいます。特定のスタイルを優先する PHP 用の厳密で迅速なスタイル ガイドは実際にはないように思われるので、タブを処理する必要があり困っています。

Git または Vim を使用して、タブ付きコードを操作し、編集中にスペースに変換する方法はありますか? 次に、おそらく git add/commit でタブに戻すことができますか?

4

1 に答える 1

3

本当に重要なことの 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 など、使い慣れたものを使用してください。
于 2011-12-04T19:43:17.687 に答える