VimでPythonのIDE 環境を一から構築する
VimでPythonのIDE環境を構築するために、この週末を費やしていました。かなり納得の行くところまで実装できたので、忘備録として残しておきます。詳しく調べたので、これから新しくPythonのためにVimを使おうと思っている人も、すでに使ってらっしゃる方にも参考になると思います。
目次
- 1 筆者環境
- 2 Vimの導入・設定
- 3 各プラグインの説明と設定
- 3.1 Pythonの強力な入力補完 jedi-vim
- 3.2 見栄えをよくしよう! vim-colors-solarized
- 3.3 Vim上から編集中のPythonを実行! vim-quickrun
- 3.4 これがなきゃ始まらない! vim-ipython
- 3.5 余計な空白を一気に削除 vim-trailing-whitespace
- 3.6 Vim上からGitコマンド vim-gitgutter
- 3.7 Pythonの構文解析 pyflakes-vim
- 3.8 入力補完 neocomplete
- 3.9 ファイルマネジメント nerdtree
- 3.10 ステータスバーをかっこ良く! vim-airline
- 3.11 多機能セレクタ ctrlp.vim
- 4 .vimrcの追加の設定
- 5 デバッガー機能について
- 6 まとめ
- 7 あとがき
- 8 参考リンク集
筆者環境
- 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() : "<C-c>" |
これがなきゃ始まらない! 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 |
デバッガー機能について
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() : "<C-c>" |
参考リンク集
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年に帰国。零細株式会社経営中。自分が得た経験から少しでもこれからFXを始める人の一助になればとブログを日々更新している。
- Web |
- More Posts (357)
Adsense
関連記事
-
-
話題のクローラー・スクレイピング!PythonならScrapyが超優秀な件
Rubyの読書会に行ったら、Pythonの面白いお話を聞けたというお話です。 Rubyクローラー本の読書会に参
-
-
vim-ipythonをWindows 7 x64で使うとR6034 が出る件
個人的なただの忘備録。 Visual Studioのコマンドプロンプトから実行すること。 http://st
-
-
Pythonで簡単に画像検出でLinux GUI操作自動化ライブラリを作ったよ
[2015/02/07 追記] [bm url="http://fx-kirin.com/python
-
-
絶対ダメ! マルチスレッドでの共通変数のインクリメント演算
デバッグ中の発見 とあるマルチスレッドプログラムをPythonで書いていた際に遭遇した誤使用です。C/C++等
-
-
Pythonで簡単自動化!PyAutoGuiが便利すぎて感動したのでご紹介
以前こんな記事を書いていたのですが、これがまったく不要になるとても便利なPython Libraryがあった
-
-
PythonのThreadを待機させるか、必要の度に作成するのかのベンチマーク比較
QueueとThreadのベンチマーク比較 2つのケースについて比較検証してみました。 実際に処理する内
-
-
Pythonのsocketでプロセス間通信をして価格データ等を送信する
どうも、お久しぶりです。キリンです。 取り敢えず1ヶ月ほど、連続でブログの更新を続けてみたのですが、そ
-
-
PythonでsleepしているThreadを呼び起こすプラクティス
Pythonのsleep中のThreadをWake up PythonのThreadにて、RubyのThr
-
-
JAVA の SHA1 Digestの作り方
>>> import base64 >>> import hashlib >>> base64.b64encode(
Adsense
サイト内検索
NEW ENTRY
-
- VimでPythonのIDE 環境を一から構築する
VimでPythonのIDE環境を構築するために、この週末を費やしていました。かなり納得の行
-
- vim-ipythonをWindows 7 x64で使うとR6034 が出る件
個人的なただの忘備録。 Visual Studioのコマンドプロンプトから実行すること。
-
- YJFXに善意の重大バグの報告後、報告人だけに新規約上停止措置
情報の共有をかねて時系列に沿ってまとめておきます。 YJFXにて重大なバグを発見
-
- Pythonで簡単自動化!PyAutoGuiが便利すぎて感動したのでご紹介
以前こんな記事を書いていたのですが、これがまったく不要になるとても便利なPython L
-
- 絶対ダメ! マルチスレッドでの共通変数のインクリメント演算
デバッグ中の発見 とあるマルチスレッドプログラムをPythonで書いていた際に遭遇した誤使
Twitter
RSS
カテゴリー
-
人気記事一覧
YJFXに善意の重大バグの報告後、報告人だけに新規約上停止措置 1,276 views
話題のクローラー・スクレイピング!PythonならScrapyが超優秀な件 160 views
Pythonで簡単自動化!PyAutoGuiが便利すぎて感動したのでご紹介 109 views
超直感MT4プログラミング講座 74 views
お勧め業者紹介 62 views
乗っ取られてからでは遅い!WordPressのログインのセキュリティを向上 46 views
Pythonで簡単に画像検出でLinux GUI操作自動化ライブラリを作ったよ 45 views