python用vim設定

"vim python"などで検索すると、vim用のpython設定らしきものがいろいろとあるが、smartindentやcinwordsをハック的に使うものが多く、ここ最近のものですら"filetype indent on"を使わないものばかりに誘導されてしまいます。

ubuntuならvim-runtimeパッケージに、"/usr/share/vim/vim72/indent/python.vim"があるので、これを使う設定を第一にすべきでしょう(kaoriyaのvim7.2にもcygwinvimにもindent/python.vimがあるのは確認済)。

必須設定

ふたつのファイルに以下の設定内容を書くだけです。

" ~/.vimrc
syntax on
filetype plugin indent on
" ~/.vim/ftplugin/python.vim
setlocal softtabstop=4
setlocal shiftwidth=4
setlocal textwidth=80
setlocal smarttab
setlocal expandtab
setlocal nosmartindent

とりわけ、(よく検索でかかる設定例のように).vimrcなどでsmartindentしてあるとindentの動作がおかしくなるので、安全のためnosmartindentしておきます。

(4スペースインデントや80文字などの)設定はPEP-8にあわせています。

オプション設定

自分のvimの他のグローバル設定です(環境差や4ハードタブやeucなどは認めない)。

" ~/.vimrc
set modeline
set nobackup
set incsearch
set smartcase
set showmatch

set encoding=utf-8
set fileencoding=utf-8
set fileformat=unix
set tabstop=8
set columns=80

自分の~/.vimrcは、上のにこの~/.vimrcを下に加えただけのものになっています。

TB返答: Re: python用vim設定 - ラシウラ - while ("im the true Vim master"); - vimグループ

まず、indentexprはvim72/indent/python.vimでsetlocalしてます。set nosmartindentは、~/.vimrcのset smartindentを打ち消したいためにしてるものです。

after/ftpluginですが、こちらも~/.vimrcのset群を上書きしたいだけで、システム標準の設定を上書きするわけではありません。そのためafterに置くものでは無いと思うのですけど。