読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Python用おすすめvim設定&プラグイン

ハイパフォーマンスPython

ハイパフォーマンスPython

目次

はじめに

pythonコードを開発する時に、

どうしてもIDEに慣れることができなかったので、

結局vimに帰ってきました。

そこで、python用のvim設定をまとめておきたいと思います。

 

python用vim設定ファイル:python.vim

自分はftpluginの機能を使って

pythonファイルを開いた時のみ設定が有効になるように、

python用設定をpython.vimというファイルにまとめています。

github.com

 

F5を押した時に編集中のpythonファイルを実行する

自分はMATLABを使っている期間が長かったので、

F5を押した時に、

編集をしているファイルを実行するように設定しています。

" <F5>で編集中のファイルを実行
" MATLABと同じショートカット
nmap <F5> :!python %

 

Python用すごい補完プラグイン: jedi-vim

python用の補完プラグインとして、

有名なのがjedi-vimです。

github.com

インストールの方法は下記のリンクに書いてあるとおりです。

NeoBundle 'davidhalter/jedi-vim'

 

下記のようにクラスのインスタンスやメソッドを表示したり、

f:id:meison_amsl:20151227212333p:plain

メソッドの引数の型を表示してくれます。

f:id:meison_amsl:20151227224137p:plain

Kでカーソル下のオブジェクトのpydocも表示してくれます。

f:id:meison_amsl:20151227224045p:plain

また、

¥gで関数の呼び出し元に飛んだり、

¥dで定義まで飛ぶこともできます。

それ以外にも

¥rで名前の変更をしたり、

¥nで関係する変数を羅列することもできるようです。

 

 

自動フォーマッタautopep8をvimから使う

以前、pythonのソフトウェアテストの記事で紹介した

pythonの自動フォーマッタautopep8をvimから

簡単に実行できるように設定しています。

myenigma.hatenablog.com

 

下記の記事を元に設定しました。

" 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.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

myenigma.hatenablog.com

ハイパフォーマンスPython

ハイパフォーマンスPython