2010-12-03 10 views
6

私はPythonでいくつかのタブ形式のコードを持っており、私はいくつかのスペースをPythonでコードをフォーマットしている。Pythonファイルの空白を変換する?

痛みを伴うコードの統合...私のエディタは、タブまたはスペースで作業することを望んでいますが、両方では動作しません。

linuxにはコマンドライン機能がありますか、まあまあ、Pythonコードの書式を片方向に変換するものはありますか?

答えて

3

reindent.pyは、すべてのpython .pyファイルを、4-spaceインデントとタブなしを使って1つに変換する素晴らしいユーティリティスクリプトです。

これは、4つの空間の基準に納得していると仮定して、異種のソースからコードを「正規化する」のに便利です。 (または、タブが必要な場合はreindent.pyを実行してから、uncom unexpandコマンドを実行することができます)。

PS。 Pythonのインストールでは、reindent.pyが既にToolsまたはExamplesフォルダにインストールされている可能性があります。 Ubuntuでは、python-examplesパッケージによって提供され、/usr/share/doc/python2.6/examples/Tools/scripts/reindent.pyにあります。

1

多くのエディタ(viなど)は、行を字下げしたときにタブを空白に変換します。だから、タブの設定をしたいのですが、その後、ファイル全体を1ステップ分インデントしてから、1ステップ分インデントしてください。

Vimのコマンド:

1GVG <-- select entire file (i have this bound to CTRL-A) 
>  <-- indent one step 
1GVG <-- select again 
<  <--- unindent one step 
2

いくつかの情報

は '男が展開する' それはあなたが Unixが、このためのコマンドとunexpandのを展開するを使用することができますDebianの

+0

これはRedhatのcoreutilsにもあります。また、他の方法で変換するために 'unexpand'を使います。 – tylerl

2

上coreutilsのであります。

一般に、私がvimでコードすると、私は自動的にタブをスペースに変換します。

set expandtab 
set tabstop=4 
0

方法のPerlについて:perl -pe 's/(.*?)\t/$1.(" " x (4-length($1)%4))/ge' file_with_tabs.txt

パイソン(これは値下げのソースからです...):

def _detab_sub(self, match): 
    g1 = match.group(1) 
    return g1 + (' ' * (self.tab_width - len(g1) % self.tab_width)) 
def _detab(self, text): 

    if '\t' not in text: 
     return text 
    return self._detab_re.subn(self._detab_sub, text)[0] 
0

は私の〜/ .vimrcとこのようになります

良いプログラマーのエディタには、タブをスペースまたはその逆に変換するコマンドがあります。エディタで検索と置換を行うこともできます。

関連する問題