Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

Windows 10にGVimベースのPython開発環境を構築する(2)基本設定偏

$
0
0

はじめに

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に等幅の日本語フォントを設定すると,表示がきれいになります.

setguifont=Consolas:h10
setguifontwide=IPAGothic:h10

[カーソルの色] IMEがONのときにカーソルの色を変更すると,現在の入力モードが判別しやすくなります.同時に,個人的な好みですが,カーソルの点滅をOFFにします.

highlight CursorIM guifg=NONE guibg=#00DD00setguicursor=a:blinkon0

[ツールバー・メニューバー] 邪魔なので表示しません.

setguioptions-=T
setguioptions-=m

_vimrc

試行錯誤中です.基本的なVimの設定やNeobundleを使ったプラグインの使用方法など,ネットの情報をかき集めて現状はこのようになっています.

以下,つまづいた点を紹介したいと思います.

[Quickrun]
Pythonで日本語を含む文字列を出力すると文字化けするので,次のように設定しました.(他に,環境変数PYTHONIOENCODINGutf-8に設定する方法もあります.が,いろいろ副作用もあるので,下記のような対応をとっています.)

_vimrc
letg:quickrun_config = {
\   '_' : {
 <<<中略 >>>
\       'hook/output_encode/enable' : 1,
\       'hook/output_encode/encoding' : 'cp932',
\   },
\}

[Python実行環境]
Pythonファイルの実行は,Quickrunで行います.ただし,普通にスクリプトとして実行したい場合もあれば,テストやDoctestを実行したい場合もあります.そこで,次のように,g:quickrun_configを設定しました.

letg:quickrun_config['python'] = {
\   'command' : 'python',
\   'outputter/buffer/filetype' : 'python_result'
\}
letg:quickrun_config['python.pytest.doctest'] = {
\   'command' : 'py.test',
\   'cmdopt' : '--doctest-modules',
\   'tempfile': '$HOME/.vim/temp/__tmp__.py',
\   'outputter/buffer/filetype' : 'doctest_result'
\}
letg:quickrun_config['python.nose.doctest'] = {
\   'command' : 'nosetests',
\   'cmdopt' : '--with-doctest',
\   'tempfile': '$HOME/.vim/temp/__tmp__.py',
\   'outputter/buffer/filetype' : 'doctest_result'
\}
letg: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ファイルを編集するときの設定を記載します.現状では以下のようになっています.

setlocalcompleteopt-=preview
setlocalomnifunc=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

盲点だったのが,

setlocalomnifunc=jedi#completions

です.これを_vimrcの中で

setomnifunc=jedi#completions

としてしまうと,_vimrcが読み込まれた時点では,正しく設定されているものの,Pythonファイルを開いた瞬間に,ファイルタイプごとに読み込まれるデフォルト設定で上書きされてしまいます.デフォルト設定を上書きするために,after/ftplugin/python.vim内でomnifuncを指定する必要があります.


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>