目次
- 目次
- はじめに
- python用vim設定ファイル:python.vim
- F5を押した時に編集中のpythonファイルを実行する
- Python用すごい補完プラグイン: jedi-vim
- 自動フォーマッタautopep8をvimから使う
- 参考資料
- MyEnigma Supporters
はじめに
pythonコードを開発する時に、
どうしてもIDEに慣れることができなかったので、
結局vimに帰ってきました。
そこで、python用のvim設定をまとめておきたいと思います。
python用vim設定ファイル:python.vim
自分はftpluginの機能を使って
pythonファイルを開いた時のみ設定が有効になるように、
python用設定をpython.vimというファイルにまとめています。
F5を押した時に編集中のpythonファイルを実行する
自分はMATLABを使っている期間が長かったので、
F5を押した時に、
編集をしているファイルを実行するように設定しています。
" <F5>で編集中のファイルを実行 " MATLABと同じショートカット nmap <F5> :!python %
Python用すごい補完プラグイン: jedi-vim
python用の補完プラグインとして、
有名なのがjedi-vimです。
インストールの方法は下記のリンクに書いてあるとおりです。
NeoBundle 'davidhalter/jedi-vim'
下記のようにクラスのインスタンスやメソッドを表示したり、
メソッドの引数の型を表示してくれます。
Kでカーソル下のオブジェクトのpydocも表示してくれます。
また、
¥gで関数の呼び出し元に飛んだり、
¥dで定義まで飛ぶこともできます。
それ以外にも
¥rで変数名の一括変換のような簡単なリファクタリングもできます。
¥nで関係する変数を羅列することもできるようです。
自動フォーマッタautopep8をvimから使う
以前、pythonのソフトウェアテストの記事で紹介した
pythonの自動フォーマッタautopep8をvimから
簡単に実行できるように設定しています。
下記の記事を元に設定しました。
" autopep " original http://stackoverflow.com/questions/12374200/using-uncrustify-with-vim/15513829#15513829 function! Preserve(command) " Save the last search. let search = @/ " Save the current cursor position. let cursor_position = getpos('.') " Save the current window position. normal! H let window_position = getpos('.') call setpos('.', cursor_position) " Execute the command. execute a:command " Restore the last search. let @/ = search " Restore the previous window position. call setpos('.', window_position) normal! zt " Restore the previous cursor position. call setpos('.', cursor_position) endfunction function! Autopep8() "--ignote=E501: 一行の長さの補正を無視" call Preserve(':silent %!autopep8 --ignore=E501 -') endfunction " Shift + F でautopep自動修正 nnoremap <S-f> :call Autopep8()<CR> " 自動保存 autocmd BufWrite *.{py} :call Autopep8()
<Shift-f>でautopepが起動し、
自動でコードをフォーマットしてくれます。
非常に便利です。
また、最終行で、
.pyファイルを保存した時に、
自動でAutopep8を起動するようにしました。
pepの文法ミスを指摘してくれるツールも沢山ありましたが、
自分で直すのが面倒だったので、
すべてautopepに任せるようにしました。
autopep8で直してくれないルール
基本的に上記のautopep8で自動的にフォーマットしてくれますが、
autopep8で直してくれないルールもあります。
これらのルールは、自分で気をつけないといけないので、
下記にまとめておきます。
パッケージは小文字(アンダースコアを使ってはいけない): ham
モジュール(ファイル名)はスネークケース: hamegg.py
クラス名はCamel case: class TestClass():
関数名はSnake case: def cook_ham()
定数は大文字 SNAKE=1.0
参考資料
MyEnigma Supporters
もしこの記事が参考になり、
ブログをサポートしたいと思われた方は、
こちらからよろしくお願いします。