他人のコード理解のために写経をやってみています。うまく行かなかった時には、オリジナルのコードと比較する必要がありますが、その時に以下のツールを使っています。
Reindent
Pythonのインデントを整えなおすツールです。参照元のコード、あるいは自分で書いたコードのインデント基準が異なっていると非常に比較しづらいので、これを使って統一しています。
pip install Rindent で"rindent"コマンドが導入されます。実行は引数に整形対象のファイルを指定するだけです。デフォルトでオリジナルファイルのバックアップを作成します。
インデントの整形はPEP8のスペース4文字に統一されます。インデント以外も含めてPEP8に修正するautopep8というツールもあるようです。
Python3未対応
Reindentはpython3では動きませんでした。
$ reindent
Traceback (most recent call last):
File "/opt/3gpu/bin/reindent", line 2, in <module>
from reindent import main
File "/opt/3gpu/lib/python3.4/site-packages/reindent.py", line 71
except getopt.error, msg:
全体的に例外の記法がPython2となっています。これに関してはカンマをasに置き換えればよさそうですが、他にprintがすべて括弧なしでの呼び出しになっています。
gvimdiff
比較にはgvimdiffを使っています。他にもmeld等いくつかツールがあるのですが、いくつか試した結果こちらを使っています。ここは個人の好みもあるでしょう。
gvimdiffのデフォルトはnowrapなので、長い行の折り返しがなされません。単純に.vimrcにset nowrapと書いても有効になってくれませんでした。
StackOverflowに(g)vimdiff起動時のみwrapを有効化する方法が掲載されていたので、それを採用しています。
autocmd FilterWritePre * if &diff | setlocal wrap< | endif
jedi (+ emacs, auto-complete)
コード補完にjediを使っています。emacsのauto-completeと組み合わせると、先に読み込んだ写経元のソース内にある長い変数、関数名なども補完が容易になります。
これ以外にも便利なツールがあったら追記してゆきます。