VimでPythonのIDE 環境を一から構築する
追記
これ見ておいたほうがいいかも。
VimでPythonのIDE環境を構築するために、この週末を費やしていました。納得の行くところまで実装できたので、忘備録として残しておきます。これから新しくPythonのためにVimを使おうと思っている人も、すでに使ってらっしゃる方にも参考になれば嬉しいです。
筆者環境
- Windows 7 x64
- Python 2.7.9 x32
Vimの導入・設定
Vimは普通に公式ページからインストールしても結構ですが、日本人の間ではKaoriya版のVimがよく使われているそうです。日本語の対応や、Shogoさんのneocompleteのプラグインを使うために必要なLuaを含めたビルドになっている等、Kaoriyaを使うメリットは多いです。
上記サイトから対象のVimのバイナリを入手して、対象のProgram Files下のディレクトリに保存してください。フォルダ中の”gvimrc”と”vimrc”というファイルは、とりあえず不要な設定が導入されているので削除しておきます。
他との兼ね合い上、Vimのencodingをutf-8で使いたいため、vim74-kaoriya-win32/switches/catalogフォルダに保存されているutf-8.vimをvim74-kaoriya-win32/switches/enabledフォルダに移動しておきます。
Kaoriyaを使うことに関しては、上記サイトを読んでおくと勉強になります。
Vundleの設定
rubyのBundleみたいな感じで簡単にGit上のVimプラグインを導入するためのプラグインです。
「NeoBundleを使うべき」みたいな記述をとても多く見つけるので、NeoBundleを使ったほうが良いかもしれませんが、まだVundleで事足りる程度しか使いこなせていないため、とりあえずVundleを導入しています。
インストールは~/.vim/bundleというディレクトリを作成し、上記サイトよりダウンロードしたファイルを~/.vim/bundle/vundleに保存します。
~/.vimrcというファイルを作成し、下記のように記述します。
1 2 3 4 5 6 |
set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " let Vundle manage Vundle " required! Bundle 'gmarik/vundle' |
これでVundleを使う準備ができました。
プラグインのインストール
~/.vimrcに下記のようにプラグインを追加していきます。
1 2 3 4 5 6 7 8 9 10 11 |
Bundle 'altercation/vim-colors-solarized' Bundle 'davidhalter/jedi-vim' Bundle 'bronson/vim-trailing-whitespace' Bundle 'airblade/vim-gitgutter' Bundle 'kevinw/pyflakes-vim' Bundle 'Shougo/neocomplete.vim' Bundle 'scrooloose/nerdtree' Bundle 'bling/vim-airline' Bundle 'thinca/vim-quickrun' Bundle 'kien/ctrlp.vim' Bundle 'ivanov/vim-ipython' |
追加ができたら保存して、Vim上で.vimrcを操作していたならば”:so %”のコマンドを入力、それ以外の場合はVimを再起動します。
1 |
:BundleInstall |
上記のコマンドをVim上で行うと、自動でプラグインがインストールされます。
各プラグインの説明と設定
Pythonの強力な入力補完 jedi-vim
Pythonの入力補完用プラグインで、かなり強力です。
ただいくつか不要な機能があるので、無効化するために設定します。
.vimrcに下記を追加します。
1 2 3 4 5 6 7 |
let g:jedi#auto_vim_configuration = 0 if !exists('g:neocomplete#force_omni_input_patterns') let g:neocomplete#force_omni_input_patterns = {} endif let g:neocomplete#force_omni_input_patterns.python = 'hw*|[^. t].w*' |
~/.vim/bundle/jedi-vim/jedi_vim.pyを少し書き換えます。
1 2 |
+ info=PythonToVimStr(c.docstring()), # docstr - info=PythonToVimStr(""), |
見栄えをよくしよう! vim-colors-solarized
solarizedのテーマを使うためのプラグインです。見た目がよく人気らしいので、導入してみました。
テーマを反映させるために、.vimrcに下記コードを追加します。
1 2 3 4 5 6 |
" -- solarized personal conf set background=dark try colorscheme solarized catch endtry |
Vim上から編集中のPythonを実行! vim-quickrun
この機能がなければIDEと呼べないですね。私はquickrunで実現してみました。Pythonファイルの編集中にF11を押せば実行されます。標準の設定から、結果が表示される位置を変更しています。
1 2 3 4 5 6 7 8 9 10 |
nnoremap <F11> :QuickRun<CR> let g:quickrun_config = { "_" : { "outputter/buffer/split" : ":botright", "outputter/buffer/close_on_empty" : 1 }, } nnoremap <expr><silent> <C-c> quickrun#is_running() ? quickrun#sweep_sessions() : " |
これがなきゃ始まらない! vim-ipython
これは後日記事にしようと思います。ちょっとした設定をしないとちゃんと動きません。
余計な空白を一気に削除 vim-trailing-whitespace
“:FixWhitespace”というコマンドで余計な余白を削除することができます。
VimでGItの変更点が分かる vim-gitgutter
Vim上からGitの変更点を識別するためのプラグインです。
Pythonの構文解析 pyflakes-vim
Pythonの構文を解析し、エラーや警告を表示してくれるようになります。
入力補完 neocomplete
有名な補完プラグインらしいです。これから勉強します。
ファイルマネジメント nerdtree
ファイルツリーウィンドウを表示してくれます。私は.vimrcに下記のように書き加えて F2 ボタンで表示するようにしました。
1 |
map <F2> :NERDTreeToggle<CR> |
ステータスバーをかっこ良く! vim-airline
ステータスバーの表示をかっこ良くするプラグインです。powerlineとどちらを使うかかなり迷ったのですが、機能が豊富そうなairlineにしました。
私のairline用の.vimrcの設定をご紹介しておきます。tablineを有効にしています。
1 2 3 |
set laststatus=2 let g:airline#extensions#tabline#enabled = 1 let g:airline_theme = 'powerlineish' |
多機能セレクタ ctrlp.vim
カレントディレクトリから対象のファイルを探してくれるコマンドを入力できるようになります。
.vimrcの追加の設定
Windows歴20年以上なので、CTRL+VとCはどうしても欲しいところ。あと、Insertモード中のBackspaceでは改行も消して欲しい。そういった変更を加えています。
Insertモード中だけ、CTRL+Vでクリップボードに貼付けができ、Visualモード中だけCTRL+Cでクリップボードにコピーできます。
1 2 3 4 5 6 7 8 9 10 11 12 |
set encoding=utf-8 syntax on set shiftwidth=4 set autoindent set expandtab set tabstop=4 set softtabstop=4 set number set backspace=indent,eol,start imap <C-V> <C-R>+ vmap <C-C> "+y filetype plugin indent on |
全画面表示で起動時する
1 2 3 4 |
" Run maximized in GUI if has("gui_running") au GUIEnter * simalt ~x endif |
デバッガー機能について
Eclipseからの乗り換えなので、pydevのような機能をVimにも欲しくなるのですが、残念ながらWindowsではこの機能の実装は難しいようです。
どうしても必要な場合は、Eclipse上から行うべきです。
参考までに、挑戦したプラグインについてご紹介しておきます。
pyclewn
バージョン2.0より前では、Windowsでも動いていたらしいです。今ではインストール用のバイナリも削除され、無理やりインストールしてみましたがちゃんと動きませんでした。
vimpdb(GoogleCode)
普通に使えばちゃんと動きます。ただ、マルチプロセス等をしようすると簡単にVimが落ちます。
gotcha/vimpdb
デバッガーとしてVimが立ち上がるコードが入力できるようになります。Vimからデバッガーを起動する挙動ではないので、なんだかなーっといった感じ。
Eclim
VimからEclipseを操作できるようになるwrapperといった感じ。これが一番現実的です。Vim上からEclipseのプロジェクト管理ができるようになるので、これで開発を進めつつ、必要に慣ればEclipse上でデバッグするというのが一番効率が良い気がします。
まとめ
これで、だいたいの欲しい機能は実装できました。コードを書いてF11で実行してテスト、必要に慣れば、Eclipse上からデバッグするというのが良さそうです。良い快適なVim Lifeを!
あとがき
Vimmerとしてはまだまだnewbieなので、ぜひ先輩方からアドバイスをいただきたく、記事にしてみました。間違っているところや、もっと良い環境の構築方法がありましたら、ぜひご教示いただければ嬉しいです!
最終的な.vimrcファイル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
set encoding=utf-8 syntax on set shiftwidth=4 set autoindent set expandtab set tabstop=4 set softtabstop=4 set number set backspace=indent,eol,start imap <C-V> <C-R>+ vmap <C-C> "+y filetype plugin indent on set rtp+=~/.vim/bundle/vundle/ call vundle#rc() " let Vundle manage Vundle " required! Bundle 'gmarik/vundle' Bundle 'altercation/vim-colors-solarized' Bundle 'davidhalter/jedi-vim' Bundle 'bronson/vim-trailing-whitespace' Bundle 'airblade/vim-gitgutter' Bundle 'kevinw/pyflakes-vim' Bundle 'Shougo/neocomplete.vim' Bundle 'scrooloose/nerdtree' Bundle 'bling/vim-airline' Bundle 'thinca/vim-quickrun' Bundle 'kien/ctrlp.vim' Bundle 'ivanov/vim-ipython' " The bundles you install will be listed here " The rest of your config follows here augroup vimrc_autocmds autocmd! " highlight characters past column 120 autocmd FileType python highlight Excess ctermbg=DarkGrey guibg=Black autocmd FileType python match Excess /%120v.*/ autocmd FileType python set nowrap augroup END set laststatus=2 let g:airline#extensions#tabline#enabled = 1 let g:airline_theme = 'powerlineish' " -- solarized personal conf set background=dark try colorscheme solarized catch endtry if (exists('+colorcolumn')) set colorcolumn=100 highlight ColorColumn ctermbg=9 endif " To allow jedi and neocomp activated together autocmd FileType python setlocal omnifunc=jedi#completions let g:jedi#auto_vim_configuration = 0 if !exists('g:neocomplete#force_omni_input_patterns') let g:neocomplete#force_omni_input_patterns = {} endif let g:neocomplete#force_omni_input_patterns.python = 'hw*|[^. t].w*' map <F2> :NERDTreeToggle<CR> nnoremap <F11> :QuickRun<CR> let g:quickrun_config = { "_" : { "outputter/buffer/split" : ":botright", "outputter/buffer/close_on_empty" : 1 }, } nnoremap <expr><silent> <C-c> quickrun#is_running() ? quickrun#sweep_sessions() : " |
参考リンク集



About Fx-Kirin
2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。
- Web |
- More Posts (386)
Adsense
関連記事
-
-
Derivatives analytics with Python の学習ノート 1,2章
洋書を読んでいると、いつも読んだ気になってちゃんと理解出来てるか自信がないことが多いので、チャプターごとに要点をまとめ
-
-
stop automatically closeing vim-ipython output with jedi-vim
Even though I commented out the following code in vim_ipytho
-
-
Python 2, Python 3 で更新したファイルを調べてreloadするパッケージを作った。
pdbでのデバッグにはreload機能がない IPythonには優秀なautorelaod機能がマジックコマンドで
-
-
重回帰分析による米雇用統計の予測モデルを作成してみる
この記事はPython その2 Advent Calendar 2015 の17日目の記事です。 1 はじめに
-
-
Python での Log 収集
プロジェクトが大きくなるにつれて、プログラムの不備を見つけるのにログの構成、ログデザインを考えることが重要になってく
-
-
Flast-Sockets + redis-py で簡単 Websocket サーバー実装
参考にしたサイト Using WebSockets on Heroku with Python | Heroku
-
-
Python での ポートフォリオの計算
Python でのポートフォリオの計算 ポートフォリオの計算について色々調べてみた。とりあえず使いたいって人はpo
-
-
Call Python/Numpy Function within Metatrader 4
Github Link [bm url="https://github.com/fx-kirin/mt4-nump
-
-
ipdb だけではなく IPython.embed も使おう
ipdb だと複数行の挿入ができなかったりするが、その問題が解消される。明らかにこちらのほうが使い勝手がいい。行のデ
-
-
まだ Python の datetime で消耗しているの? maya 使おうぜ
この記事は Python Advent Calendar 2016 の 24日目の記事です。 当初は SCOOP
Adsense
NEW ENTRY
-
- Python 2, Python 3 で更新したファイルを調べてreloadするパッケージを作った。
pdbでのデバッグにはreload機能がない IPythonには優秀なautorelaod機能
-
- Python での Log 収集
プロジェクトが大きくなるにつれて、プログラムの不備を見つけるのにログの構成、ログデザインを考える
-
- Flast-Sockets + redis-py で簡単 Websocket サーバー実装
参考にしたサイト Using WebSockets on Heroku with Python
-
- Rust で Python の拡張ライブラリ作成 と numpy との性能比較
この記事は Python Advent Calendar 5日目の記事です。遅れてすみません。
-
- システムトレードを始める前に知っておきたかったこと
今日の勉強会で発表してきました。nbviewer に共有しておきます。 システムトレードを始め
Twitter
RSS
カテゴリー
-
人気記事一覧
任意のインジケータのシグナルでアラートやメール機能を追加する 1,540ビュー
Pythonで簡単自動化!PyAutoGuiが便利すぎて感動したのでご紹介 652ビュー
【β版】裁量トレード検証ツール TradeTester公開 242ビュー
Pythonのsocketでプロセス間通信をして価格データ等を送信する 232ビュー
Pythonで簡単に画像検出でLinux GUI操作自動化ライブラリを作ったよ 214ビュー
AMD Ryzen & Nvidia GTX 1080 BTO PC 構成・組立と Ubuntu インストール 157ビュー
Python の超お手軽のネットワーク分散コンピューティングライブラリSCOOP 147ビュー
Comment
If you are using vim 8 / neovim, maybe you can try asyncrun: https://github.com/skywind3000/asyncrun.vim as a replacement to quickrun with better user experience and expansibility.