Posts Tagged: development

PerlもPythonも書きやすい.vimrc

最近Pythonに触れる機会が増えてきました。
今まで主にPerlをいじっていたのでVimのインデントの設定などがPerl向けになっており、
これまでのVimの設定でPythonを書こうとするとなんとも歯がゆい思いをすることに。

ファイルタイプでVimの設定を分けないといけないと思い、その時のメモ。

方法としては大きく2種類。

  1. ~/.vimrcだけで済ませる方法
  2. ファイルタイプで専用の設定ファイルに振り分ける方法

1. ~/.vimrcだけで済ませる方法

メインで使っている~/.vimrcをちょこっと変えて対応するなら以下だけで済む。

" For Perl
set autoindent
set cindent
" cindentでのインデントスタイルを設定する(1s=shiftwidthの1倍のインデント量)
set cinoptions=1s
" 再インデントを行う場合の条件
set cinkeys=0{,0},:,!^F,o,O,e
set formatoptions=tcqr
" タブの設定
set ts=4 sw=4 sts=0
set expandtab
set backspace=2

" For Python
autocmd FileType python setl nocindent
autocmd FileType python setl smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
autocmd FileType python setl tabstop=8 expandtab shiftwidth=4 softtabstop=4

 

2. ファイルタイプで専用のファイルタイプに振り分ける方法

もっとファイルタイプが増えて、それぞれ別の設定を適用したいならこちらで対応したほうがわかりやすいかもしれない。
(今はPerlとPythonくらいなので1.でいいや^^;)
ファイルタイプで設定をわけるプラグインを使用して、ファイルタイプ別にそれぞれ用意した設定ファイルを読み込ませる。
このプラグインはデフォルトで入ってるはずなので以下のように”filetype plugin on”とするだけで使えるようになるはず。。。
設定ファイルはruntimepath/ftplugin/ディレクトリ以下に”ファイルタイプ.vim”という名前で保存する。
今回はruntimepathに~/.vimを設定し、python.vimという設定ファイルを読み込ませる。

<~/.vimrcの内容>

" filetypeプラグインを使用する
filetype plugin on
set runtimepath^=$HOME/.vim

<runtimepath/ftplugin/python.vimの内容>

set nocindent
set smartindent cinwords=if,elif,else,for,while,try,except,finally,def,class
set tabstop=8 expandtab shiftwidth=4 softtabstop=4

参考
http://d.hatena.ne.jp/over80/20090305/1236264851
http://d.hatena.ne.jp/teppeis/20080705/1215262928
viでファイルタイプごとの設定