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

やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Pythonを書くVim環境[WindowsXP]

ワークフロー

PythonVimで書きたい。WindowsXPで環境を用意してみた。

現状の確認

MinGW/msysをインストールしたときのvim(7.3)が入っている。

これでも十分Pythonを書ける。しかし以下のようにバージョン確認すると、-python, -python3となっており、Pythonのオプションがついていない。

vim --version
C:>vim --version
VIM - Vi IMproved 7.3 (2010 Aug 15, compiled Mar 19 2011 15:37:04)
Included patches: 1-138
Compiled by ir0nh34d@users.sourceforge.net
Huge version without GUI.  Features included (+) or not (-):
+arabic +autocmd -balloon_eval -browse ++builtin_terms +byte_offset +cindent
-clientserver -clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
+conceal +cryptv +cscope +cursorbind +cursorshape +dialog_con +diff +digraphs
-dnd -ebcdic +emacs_tags +eval +ex_extra +extra_search +farsi +file_in_path
+find_in_path +float +folding -footer +fork() +gettext -hangul_input +iconv
+insert_expand +jumplist +keymap +langmap +libcall +linebreak +lispindent
+listcmds +localmap -lua +menu +mksession +modify_fname +mouse -mouseshape
+mouse_dec -mouse_gpm -mouse_jsbterm +mouse_netterm -mouse_sysmouse
+mouse_xterm +multi_byte +multi_lang -mzscheme +netbeans_intg -osfiletype
+path_extra -perl +persistent_undo +postscript +printer +profile -python
-python3 +quickfix +reltime +rightleft -ruby +scrollbind +signs +smartindent
-sniff +startuptime +statusline -sun_workshop +syntax +tag_binary
+tag_old_static -tag_any_white -tcl -terminfo +termresponse +textobjects +title
 -toolbar +user_commands +vertsplit +virtualedit +visual +visualextra +viminfo
+vreplace +wildignore +wildmenu +windows +writebackup -X11 -xfontset -xim -xsmp
 -xterm_clipboard -xterm_save
   system vimrc file: "$VIM/vimrc"
     user vimrc file: "$HOME/.vimrc"
      user exrc file: "$HOME/.exrc"
  fall-back for $VIM: "/usr/share/vim"
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H     -g -O2
Linking: gcc    -o vim.exe       -lm  -ltermcap -liconv -lintl

新しいVimのインストール

vim-jpからインストールする。

執筆時点での最新版は8.0.0082。約16MB。

ダウンロード後、zipを解凍。環境変数に追加。MinGW/msysのvimよりも優先的に参照されるようにするために、先頭にパスを追記した。

以下のようにバージョン確認。+python/dyn, +python3/dyn, +ruby/dynなどを確認。

Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:>vim --version
VIM - Vi IMproved 8.0 (2016 Sep 12, compiled Nov 13 2016 15:09:51)
MS-Windows 32 ビット コンソール 版
適用済パッチ: 1-82
Modified by koron.kaoriya@gmail.com
Compiled by koron.kaoriya@gmail.com
Huge 版 without GUI.  機能の一覧 有効(+)/無効(-)
+acl             +extra_search    +mouse           +tag_old_static
+arabic          +farsi           -mouseshape      -tag_any_white
+autocmd         +file_in_path    +multi_byte      -tcl
-balloon_eval    +find_in_path    +multi_lang      +termguicolors
-browse          +float           -mzscheme        -tgetent
++builtin_terms  +folding         -netbeans_intg   -termresponse
+byte_offset     -footer          +num64           +textobjects
+channel         +gettext/dyn     +packages        +timers
+cindent         +guess_encode    +path_extra      +title
+clientserver    -hangul_input    +perl/dyn        -toolbar
+clipboard       +iconv/dyn       +persistent_undo +user_commands
+cmdline_compl   +insert_expand   -postscript      +vertsplit
+cmdline_hist    +job             +printer         +virtualedit
+cmdline_info    +jumplist        +profile         +visual
+comments        +kaoriya         +python/dyn      +visualextra
+conceal         +keymap          +python3/dyn     +viminfo
+cryptv          +lambda          +quickfix        +vreplace
+cscope          +langmap         +reltime         +wildignore
+cursorbind      +libcall         +rightleft       +wildmenu
+cursorshape     +linebreak       +ruby/dyn        +windows
+dialog_con      +lispindent      +scrollbind      +writebackup
+diff            +listcmds        +signs           -xfontset
+digraphs        +localmap        +smartindent     -xim
-dnd             +lua/dyn         +startuptime     -xpm_w32
-ebcdic          +menu            +statusline      -xterm_save
+emacs_tags      +migemo/dyn      -sun_workshop
+eval            +mksession       +syntax
+ex_extra        +modify_fname    +tag_binary
      システム vimrc: "$VIM\vimrc"
      ユーザー vimrc: "$HOME\_vimrc"
   第2ユーザー vimrc: "$HOME\vimfiles\vimrc"
   第3ユーザー vimrc: "$VIM\_vimrc"
       ユーザー exrc: "$HOME\_exrc"
    第2ユーザー exrc: "$VIM\_exrc"
  デフォルトファイル: "$VIMRUNTIME\defaults.vim"
コンパイル: cl -c /W3 /nologo  -I. -Iproto -DHAVE_PATHDEF -DWIN32  -DFEAT_CSCOPE
  -DFEAT_JOB_CHANNEL     /DMODIFIED_BY=\"koron.kaoriya@gmail.com\" /DDYNAMIC_MSV
CRT_DLL=\"msvcr100.dll\" /DGETTEXT_DLL=\"intl.dll\" /DGETTEXT_DLL_ALT=\"intl.dll
\" /D_BIND_TO_CURRENT_VCLIBS_VERSION=1 /D_USE_32BIT_TIME_T=1 -DWINVER=0x0501 -D_
WIN32_WINNT=0x0501 /Fo.\ObjCXULYHRi386/ -DHAVE_STDINT_H /Ox /GL -DNDEBUG /MD -DD
YNAMIC_ICONV -DDYNAMIC_GETTEXT -DDYNAMIC_MIGEMO -DFEAT_LUA -DDYNAMIC_LUA -DDYNAM
IC_LUA_DLL=\"lua51.dll\" -DFEAT_PYTHON -DDYNAMIC_PYTHON -DDYNAMIC_PYTHON_DLL=\"p
ython27.dll\" -DFEAT_PYTHON3 -DDYNAMIC_PYTHON3 -DDYNAMIC_PYTHON3_DLL=\"python35.
dll\" -DFEAT_PERL -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DDYNAMIC_PERL -DD
YNAMIC_PERL_DLL=\"perl524.dll\" -DFEAT_RUBY -DDYNAMIC_RUBY -DDYNAMIC_RUBY_VER=23
 -DDYNAMIC_RUBY_DLL=\"msvcrt-ruby230.dll\" -DFEAT_HUGE /Fd.\ObjCXULYHRi386/ /Zi
リンク: link /RELEASE /nologo /subsystem:console /LTCG:STATUS oldnames.lib kerne
l32.lib advapi32.lib shell32.lib gdi32.lib  comdlg32.lib ole32.lib uuid.lib /mac
hine:i386  /nodefaultlib msvcrt.lib  user32.lib  /nodefaultlib:lua51.lib   /node
faultlib:python27.lib /nodefaultlib:python35.lib    WSock32.lib  /PDB:vim.pdb -d
ebug

成果

  • シンタックス・ハイライトがされるようになった
  • TABキーを押下するとスペースキー4個になる
  • インデントを1キーでアンインデントできる(BackSpaceキー)

Before

f:id:ytyaru:20161203215725p:plain

After

f:id:ytyaru:20161203215748p:plain

参考

さらに改善できそう。でも、難しそう&キリがない。

こういうのは面倒になってから用意したほうがいい。

vimプラグインというのがあるらしい。プラグインを管理するツールがあるらしい。

また、vimにはテキストオブジェクトとオペレータという概念があるらしい。それらを扱うと便利になるっぽい。

とりあえず、入れるとしても以下のもので十分。でも、なくても困らない。今はいいや。

プラグイン 概要
dein.vim vimプラグインを管理する
thinca/vim-quickrun vimからプログラムを実行する

所感

コードを書く前からツールにこだわりすぎると前に進めなくなる。とりあえず書こう。そして本題のgoogle-api-python-clientに戻ろう。