インストール に続いて、実際に rope を使い始めてみます。
とりあえず Flask アプリを題材に環境を作ってみます。
準備
$ mkvirtualenv flask $ pip install flask $ mkdir hello $ cd hello
app.py を作ります
import flask app = flask.Flask(__name__) @app.route('/') def index(): return 'hello world.' if __name__ == '__main__': app.run()
プロジェクトのセットアップ
:RopeProjectConfig
というコマンドを実行すると、プロジェクトのルートディレクトリを聞かれる (デフォルトでは .
) ので、そのままエンターキーを押すと、こんどはプロジェクトを作るかどうか (0. yes 1. no) で聞いてきます。 0 を入力してエンターキーを押すとプロジェクトが作られます。
.ropeproject/config.py
というファイルができるので、それを編集して、 virtualenv が検索パスに含まれるようにします。
# You can extend python path for looking up modules #prefs.add('python_path', '~/python/')
という行があるので、この下に virtualenv の site-packages を追加しましょう。 私の場合は次のように書きました。
prefs.add('python_path', '~/.virtualenvs/flask/lib/python2.7/site-packages')
定義ジャンプ
これで準備完了です。 vim で先ほどつくった app.py
を開いてみましょう。
たとえばカーソルを route
の上にのせて、 :RopeGotoDefinition
というコマンドを実行するか、 C-c g
というショートカットで、 Flask.route
を定義している位置にジャンプできるはずです。
リネーム
リファクタリング機能も試してみましょう。
カーソルを app
の上にのせて、 :RopeRename
というコマンドを実行すると、 New name: [app]
とコマンド行に表示されるので、 application
と入力します。
すると、
0. perform 1. preview ... Choose what to do: [perform]
と聞かれます。いきなり perform はこわいので、 1 を入力してエンターキーを押すと、
--- a/app.py +++ b/app.py @@ -1,10 +1,10 @@ import flask -app = flask.Flask(__name__) +application = flask.Flask(__name__) -@app.route('/') +@application.route('/') def index(): return 'hello world' if __name__ == '__main__': - app.run() + application.run() 0. yes 1. no Do the changes?
のように聞かれます。0 を入力してエンターを押すと実際に修正が実行されます。
今回は1ファイルしかないので差分も1ファイルですが、複数ファイルにまたがる変更にも対応しているはずです。
最後に
まだ試していませんが、 Rope にはメソッド抽出みたいなリファクタリング機能もありますし、補完機能もあります。 Emacs や Sublime Text 2 でも使えるはずなので、IDEみたいな機能が欲しい人は導入すると良いと思います。