はじめに
Windows 10, 64 bitビットPCにGVimベースのPython開発環境を構築します.第1回では,GVimを動作させるために必要な環境をインストールしました.第2回ではGVimの基本的な設定を行っていきます.
GVim設定ファイル用のGitHubレポジトリの作成
前回の記事では,GVimの設定ファイルをローカルに作成したGitレポジトリ内に作成しました.しかし,この方法は,他のPCでも同じ設定を利用しようとするときに,あまり良い方法ではありませんでした.今回は,GitHub上に設定ファイルレポジトリを作り,それをクローンすることにします.まずは,前回作成したレポジトリC:\Users\daizu\AppData\Local\vim74-daizu\vimfiles
を削除します.次に,GitHubの自アカウントのページを開き,新規にvimfilesレポジトリを作成します.このレポジトリをPCにクローンします.今回は,ホームディレクトリ直下に設定ファイルを置くことにします.コマンドプロンプトを開き,C:\Users\daizu
に移動した後に,
$ git clone https://github.com/daizutabi/vimfiles
とします.ホームディレクトリC:\Users\daizu
の下に,vimfiles
ディレクトリが作成されました.このディレクトリ下にdotfiles
ディレクトリを作成し,その中に_vimrc
,_gvimrc
という名前でファイルを作成します.そして,これらをホームディレクトリにリンクします. 管理者権限でコマンドプロンプトを開き,
$ mklink c:\Users\daizu\_vimrc c:\Users\daizu\vimfiles\dotfiles\_vimrc
$ mklink c:\Users\daizu\_gvimrc c:\Users\daizu\vimfiles\dotfiles\_gvimrc
とします.
_gvimrc
_gvimrc
の設定を以下に記載します.
[フォント] guifontwide
に等幅の日本語フォントを設定すると,表示がきれいになります.
set guifont=Consolas:h10
set guifontwide=IPAGothic:h10
[カーソルの色] IMEがONのときにカーソルの色を変更すると,現在の入力モードが判別しやすくなります.同時に,個人的な好みですが,カーソルの点滅をOFFにします.
highlight CursorIM guifg=NONE guibg=#00DD00
set guicursor=a:blinkon0
[ツールバー・メニューバー] 邪魔なので表示しません.
set guioptions-=T
set guioptions-=m
_vimrc
試行錯誤中です.基本的なVimの設定やNeobundleを使ったプラグインの使用方法など,ネットの情報をかき集めて現状はこのようになっています.
以下,つまづいた点を紹介したいと思います.
[Quickrun]
Pythonで日本語を含む文字列を出力すると文字化けするので,次のように設定しました.(他に,環境変数PYTHONIOENCODING
をutf-8
に設定する方法もあります.が,いろいろ副作用もあるので,下記のような対応をとっています.)
let g:quickrun_config = {
\ '_' : {
<<< 中略 >>>
\ 'hook/output_encode/enable' : 1,
\ 'hook/output_encode/encoding' : 'cp932',
\ },
\}
[Python実行環境]
Pythonファイルの実行は,Quickrunで行います.ただし,普通にスクリプトとして実行したい場合もあれば,テストやDoctestを実行したい場合もあります.そこで,次のように,g:quickrun_config
を設定しました.
let g:quickrun_config['python'] = {
\ 'command' : 'python',
\ 'outputter/buffer/filetype' : 'python_result'
\}
let g:quickrun_config['python.pytest.doctest'] = {
\ 'command' : 'py.test',
\ 'cmdopt' : '--doctest-modules',
\ 'tempfile': '$HOME/.vim/temp/__tmp__.py',
\ 'outputter/buffer/filetype' : 'doctest_result'
\}
let g:quickrun_config['python.nose.doctest'] = {
\ 'command' : 'nosetests',
\ 'cmdopt' : '--with-doctest',
\ 'tempfile': '$HOME/.vim/temp/__tmp__.py',
\ 'outputter/buffer/filetype' : 'doctest_result'
\}
let g:quickrun_config['python.pytest'] = {
\ 'command' : 'py.test',
\ 'cmdopt' : '-s -v',
\ 'tempfile' : '$HOME/.vim/temp/__tmp__.py',
\ 'outputter/buffer/filetype' : 'pytest_result'
\}
保存していない編集中のファイルをQuickrunにかけると,デフォルトでは拡張子が.tmp
であるテンポラリファイルが作成されて実行コマンドに渡されます.通常のPythonの実行では問題ないのですが,nose, pytestでは拡張子が.py
であることが必要なようなので,`tempfile`
を明示的に指定しています.'outputter/buffer/filetype'
を指定しているのは,あとからシンタックスカラーを使うためです.
Pythonファイル用の設定
vimfilesディレクトリ以下に,after/ftplugin/python.vimを作成してPythonファイルを編集するときの設定を記載します.現状では以下のようになっています.
setlocal completeopt-=preview
setlocal omnifunc=jedi#completions
nnoremap <silent> <buffer> <Leader>w :<C-u>WatchdogsRun<CR>
nnoremap <silent> <buffer> <Leader>tt :<C-u>Pytest file<CR>
nnoremap <silent> <buffer> <Leader>tf :<C-u>Pytest function<CR>
nnoremap <silent> <buffer> <Leader>tc :<C-u>Pytest class<CR>
nnoremap <silent> <buffer> <Leader>tm :<C-u>Pytest method<CR>
nnoremap <silent> <buffer> <Leader>tn :<C-u>QuickRun -type python.nose.doctest<CR>
nnoremap <silent> <buffer> <Leader>td :<C-u>QuickRun -type python.pytest.doctest<CR>
nnoremap <silent> <buffer> <Leader>tp :<C-u>QuickRun -type python.pytest<CR>
nmap <buffer> ,p <Plug>(operator-autopep8)
nmap <buffer> ,pp <Plug>Autopep8Line
nmap <buffer> <F8> <Plug>Autopep8Entire
盲点だったのが,
setlocal omnifunc=jedi#completions
です.これを_vimrc
の中で
set omnifunc=jedi#completions
としてしまうと,_vimrc
が読み込まれた時点では,正しく設定されているものの,Pythonファイルを開いた瞬間に,ファイルタイプごとに読み込まれるデフォルト設定で上書きされてしまいます.デフォルト設定を上書きするために,after/ftplugin/python.vim内でomnifunc
を指定する必要があります.