インストール に続いて、実際に 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みたいな機能が欲しい人は導入すると良いと思います。