1

CakePHP ソースを GitHub にコミットした後、コードのインデントに 4 つのスペースではなくタブを使用していることに気付きました。彼らはまた.editorconfig、私がこれに変更したファイルでこれを定義します:

root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

ソース コード全体を実行し、すべてのタブをインデント用に 4 つのスペースに安全に変換する方法はありますか? 私の推論は、リポジトリのすべての開発者が 4 つのスペースを使用しており、混合と一致により、GitHub で見たときにコードが場違いに見えるからです。そして、私は一貫性のファンです:)

自作の方法で独自のスクリプトを作成する場合、どの言語を使用するかはあまり気にしませんが、PHP の方が自信があります (この仕事に最適ではないことはわかっています)。preg_replace('~\t~', ' ', $fileText)これは、各ファイルで実行するのと同じくらい簡単ですか?

4

3 に答える 3

2

実行したいディレクトリでこれを試してください:

find ./ -type f -exec sed -i 's/\t/XXXX/g' {} \;

これにより、タブが 4 つのスペースに置き換えられます (X をスペースに置き換えた場合)。

t/との間のスペースを調整して、/g好きな数のスペースを入れてください。X を取り除き、そこにスペースを入れてください。

于 2013-01-30T13:54:16.303 に答える
1

タブをスペースで直接置き換えると、そのタブ領域に侵入するスペース文字の後にタブが続くと、ずれが発生します。

expandtabs() 文字列メソッドを使用する基本的な python スクリプトは、考案されたときと同じように見えるコードになります。例は、タブ スペースが 4 の場合です。

#!/usr/bin/python
#
# convert source code or text with spaces, being careful to align text as it was conceived
# with the original tab space settings, which is defaulted to 4 spaces per tab.
#
# usage:
# ./tabs2spaces.py <file_to_convert>

import os
import sys

spaces_per_tab = 4

argc = len( sys.argv )

if argc < 2:
    print 'no file argument specified'

filename = sys.argv[ 1 ]
old_filename = 'old_' + filename

os.rename( filename, old_filename )

fn = open( filename, 'wb' )
fo = open( old_filename, 'r' )

for line in fo:
    fn.write( line.expandtabs( spaces_per_tab ) )

fn.close()
fo.close()
于 2013-02-27T08:12:18.440 に答える
0

Sublime Text 2 にアクセスできるかどうか、または既に使用しているかどうかはわかりませんが、すべてのタブをスペースに自動的に変換できます。

Sublime Text 2で4つのスペースをタブに置き換える方法は?

于 2013-01-30T13:40:31.310 に答える