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

開発環境構築

Cygwinのインスト ール

isetup.exeを持ってきて、実行。 インストールパッケージは、ひとまず、デフォルトのまま。 パッケージの保存場所も適当に決める。

環境変数は以下を設定

* CYGWIN ntsec ※sambaを利用するならsmbntsecもつける、globはデフォルト有効なので不要
* HOME /home/{ユーザ名}
* MAKE_MODE UNIX
* SHELL /bin/bash

ただし、gvimを使っていると、HOMEとか書き換えられていると、もろもろ困るので、 環境変数に設定ではなく、★Cygwin.batに以下を追加する。

* set HOME=/home/%USERNAME%
* set MAKE_MODE=UNIX
* set SHELL=/bin/bash

Eclipseのインストール

pleiadesにするか、普通のやつにするか。。。
もろもろの設定負荷を考えると、pleiadesの方が効率的か。

tools.jar問題

Eclipseの「ヘルプ」→「Eclipseについて」→「インストール詳細」→「構成」タブで java.homeを確認する。 java.homeのパスが問題なければ、以下をpom.xmlに追加。

    <dependency>
        <groupId>jdk.tools</groupId>
        <artifactId>jdk.tools</artifactId>
        <version>1.7</version>
        <scope>system</scope>
        <systemPath>${java.home}/lib/tools.jar</systemPath>
    </dependency>

java.homeがおかしい場合は、eclipse.ini(Winならeclipse.exeと同じフォルダにある)に"-vm"オプションを追加します。なお"-vm"オプションは"-vmargs"の前に設定することを忘れずに。"-vmargs"以下はJVMへの引数として解釈されてしまいます。 例: ... -vm C:/Program Files/Java/jdk1.6.0_xx/bin/javaw.exe -vmargs ...

Cygwinのアンインストール

https://cygwin.com/faq/faq.html#faq.setup.uninstall-all

  1. サービス(cron,cygserver,inetd,apache,postgresql,etc.)を削除。 1.1 cygrunsrv -Lで登録しているサービスを確認。この時点で、cygrunsrvがない場合は、スキップ。 1.2 cygrunsrv --stop で停止 1.3 cygrunsrv --remove で削除

  2. X11サーバが起動している時は、停止。バッググラウンドのCygwinプログラムも停止。

  3. コマンドプロンプトも終了。

  4. 再インストール時に備え、マウントポイントを残しておきたければ、mount -mの出力をメモ。

  5. /usr/bin/cyglsa-configでcyglsa.dllをインストールしていた場合は、LSA authentication packageの使用を停止。 5.1 レジストリの/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Lsa/Authentication Packagesの値を、元のmsv1_0に戻す。 5.2 windowsを再起動

  6. Cygwinのルートフォルダとサブフォルを全て削除。 6.1 パーミッションエラーになる場合は、Cygwinのルートフォルダからすべてをにフルコントロールをつけて、削除。 ディレクトリを右クリックし、プロパティからセキュリティタブで設定。

  7. デスクトップ、スタートメニューのショートカット削除。

  8. setup-x86{_64}.exeがインストール時に使ったダウンロードフォルダを削除

  9. 環境変数を削除。 9.1 PATHを修正 9.2 CYGWIN,HOME,MAKE_MODE,SHELLを削除

  10. レジストリから削除 10.1 HKEY_LOCAL_MACHINE\SOFTWARE\Cygwinを削除。ただし、これまでの手順を進めていれば、空のはず。 10.2 HKEY_CURRENT_USER\SOFTWARE\Cygwinを削除。ただし、これまでの手順を進めていれば、空のはず。

Windows上でのvimの環境構築

いろいろと設定を変更していると、必要なプラグインを追加した時によくわからないエラーになったりする。
そのたびに、vimを入れ直したりするのは、非常に面倒なので、vimの設定について一度、ちゃんと整理してみる。

前提/構築環境

なお、以前にvimを使っていた人は、悪さしないように、以下のファイル等々を別の場所に移しておく。あとで、必要に応じて復旧する。

  • $VIM配下
  • $HOME\_vimrc
  • $HOME\_gvimrc
  • $HOME\vimfiles配下

インストール

  1. 香り屋さんのサイトから、vimをダウンロードして、適当なディレクトリに解凍する。
  2. まずは、この時点で、状況を確認する。
    • vimを起動して、:version コマンドを実行
:version
(省略)
      システム vimrc: "$VIM\vimrc"
        ユーザ vimrc: "$HOME\_vimrc"2ユーザ vimrc: "$HOME\vimfiles\vimrc"3ユーザ vimrc: "$VIM\_vimrc"
(省略)
     システム gvimrc: "$VIM\gvimrc"
       ユーザ gvimrc: "$HOME\_gvimrc"2ユーザ gvimrc: "$HOME\vimfiles\gvimrc"3ユーザ gvimrc: "$VIM\_gvimrc"
(省略)

なお、$VIMや$HOMEがどこになっているかは、以下のコマンドで確認できる。

:echo $VIM
:echo $HOME
:echo $VIMRUNTIME

vimの設定ファイルであるvimrcは、上記の順に読み込まれ、同じパラメータに別の設定をした場合、あとに読まれるファイルで上書かれることになる。

そして、香り屋版のvimの場合、最初に読み込まれるシステムvimrcが同梱されている。つまり、香り屋版を使った場合、利用者は何も設定しなくても、このシステムvimrcの設定はされることになる。さらに、香り屋版に同梱のシステムvimrcから、設定の前に、$VIMRUNTIME/vimrc_example.vimも読み込んでいる。

したがって、香り屋版のvimをそのまま使っている場合、知らないうちに、以下のvimrcの設定が有効になっている。

(システムvimrcから読み込み): "$VIMRUNTIME\vimrc_example.vim"
             システム vimrc: "$VIM\vimrc"
            システム gvimrc: "$VIM\gvimrc"

そのため、プラグインを導入した際に、どうしてもエラー等が発生する場合には、上記の設定もちゃんと確認する必要がある。


ちなみに、香り屋版に同梱のシステムvimrcでは、このファイルの設定をskipするためのオプションが用意されている。

  • $VIM/vimrc_local.vimが存在し、変数g:vimrc_local_finishに0以外の値が設定されていれば、香り屋版に同梱のシステムvimrcをskipする。
  • $HOME/.vimrc_first.vimが存在し、変数g:vimrc_first_finishに0以外の値が設定されていれば、香り屋版に同梱のシステムvimrcをskipする。
  • 上記のどちらかのファイルに、変数g:no_vimrc_exampleに0以外の値が設定されていれば、$VIMRUNTIME/vimrc_example.vimをskipする。

この辺りは、以下の議論で追加された?
https://github.com/vim-jp/issues/issues/331
非常に複雑になっており、わかりづらい。。。


上記を理解した上で、以下の様にvimrcを使い分けるのが良いと思われる。

  • システム vimrc: "$VIM\vimrc"
    • 環境(win,mac,unixなど)依存など、全ユーザで共通な設定を記載
  • ユーザ vimrc: "$HOME\_vimrc"
    • 各ユーザが独自にカスタマイズしたいものを記載
  • 第2ユーザ vimrc: "$HOME\vimfiles\vimrc"
    • こちらも、各ユーザが独自にカスタマイズしたいものを記載
    • 個人的には、$HOME直下をあまり汚したくないので、こちらに設定する方が好み。
    • また、vimfilesディレクトリを用途ごとに複数用意して、使い分けたりもできるかも。
  • 第3ユーザ vimrc: "$VIM\_vimrc"
    • 全ユーザに必ず強いる設定を記載

neobundleをインストール

なにはなくとも、neobundleをインストールする。
基本的にhttps://github.com/Shougo/neobundle.vimに記載しているとおりにやればよい。ただし、Windowsの場合、パスが少しことなる。

  1. bundleフォルダを作成
    • $HOME\vimfiles\bundleを作成する
  2. neobundleをcloneする
  3. vimrcを作成
    • $HOME\vimfiles\vimrcを作成

2. のコマンドは以下のとおり。

> git clone https://github.com/Shougo/neobundle.vim $HOME\vimfiles\bundle\neobundle.vim

3. は以下の内容を記載。

" Note: Skip initialization for vim-tiny or vim-small.
if !1 | finish | endif

if has('vim_starting')
  set nocompatible               " Be iMproved

  " Required:
  set runtimepath+=~/vimfiles/bundle/neobundle.vim/
endif

" Required:
call neobundle#begin(expand('~/vimfiles/bundle/'))

" Let NeoBundle manage NeoBundle
" Required:
NeoBundleFetch 'Shougo/neobundle.vim'

" My Bundles here:
" Refer to |:NeoBundle-examples|.
" Note: You don't set neobundle setting in .gvimrc!

call neobundle#end()

" Required:
filetype plugin indent on

" If there are uninstalled bundles found on startup,
" this will conveniently prompt you to install them.
NeoBundleCheck

あとは、適宜必要な設定を$HOME\vimfiles\vimrcに記載する。

githubで管理しているdotfilesを使う

github上でdotfilesを管理する人が多い。そうすることで、どの環境からでも同じ設定でvimを使うことができる。
Linuxでも使うことを考慮し、vimの設定ファイルは通例に習い.vimrc、.gvimrcとしておく。ただし、windowsでは、_vimrcやvimrcというファイル名のため、リンクを張って対応する。

  1. githubレポジトリに登録
    • 登録方法については、ここでは省略する。
  2. githubレポジトリをclone
    • ここでは、$GIT\dotfiles\.vimrc、$GIT\dotfiles\.gvimrcとする
  3. リンクを張る
C:\Windows\system32>mklink %HOMEPATH%"\vimfiles\vimrc" $GIT\dotfiles\.vimrc
C:\Windows\system32>mklink %HOMEPATH%"\vimfiles\gvimrc" $GIT\dotfiles\.gvimrc

これで、ひと通りの環境構築完了。さて、エラーなく動くかな。。。

基本的なvimrcの設定について調べてみた

もろもろの諸事情により、vimを使うことになったので、基本的なvimrcの設定について調べてみた。
なお、確認環境はwindows7であり、gvim(香り屋版)とする。

ベース設定

"-------------------------------------------------------------------------------
" ベース設定
"-------------------------------------------------------------------------------
scriptencoding cp932                    " このファイルのエンコード
set nocompatible                        " vi互換しない

windows環境なので、vimrcのエンコードはcp932にしている。

エンコーディング設定

"-------------------------------------------------------------------------------
" 内部エンコーディング設定
"-------------------------------------------------------------------------------
set encoding=cp932                      " 内部エンコーディング

"-------------------------------------------------------------------------------
" エンコーディング、ファイルフォーマット設定
"-------------------------------------------------------------------------------
set fileencoding=cp932                                     " 基本文字コード
set fileencodings=iso-2022-jp,cp932,sjis,euc-jp,utf-8      " 文字コード自動判別(優先順)
set fileformat=dos                      " 基本ファイルフォーマット
set fileformats=dos,unix,mac            " ファイルフォーマット自動判別(優先順)

内部エンコーディングや、デフォルトのエンコードもcp932。
ファイルフォーマット(改行コード)は、dos(CRLF)。

システム設定

"-------------------------------------------------------------------------------
" システム設定
"-------------------------------------------------------------------------------
set nobackup                            " backupファイルを作らない
set writebackup                         " ファイルの上書きの前にbackupファイルを作る
                                        " nobackupの場合は、上書きに成功したら削除される
set backupdir=~/vimfiles/backup         " backupファイルディレクトリ
set swapfile                            " swapファイルを作る
set directory=~/vimfiles/swap           " swapファイルディレクトリ

set confirm                             " 保存されていないファイルがあるとき、終了前に保存確認
set hidden                              " 保存されていないファイルがあるときでも、保存しないで他のファイルを表示
set autoread                            " 外部でファイルに変更がされた場合は読みなおす
set browsedir=buffer                    " ファイル保存時の場所を、開いているファイルが有る場所に設定

set noerrorbells                        " エラー音抑止(gvimはgvimrcで指定)
set novisualbell                        " ビジュアルベル抑止(gvimはgvimrcで指定)
set visualbell t_vb=                    " ビープ音抑止(gvimはgvimrcで指定)

set history=100                         " コマンド、検索履歴数
set infercase                           " 補完の際の大文字小文字の区別しない
set wildmenu                            " ファイル名補完有効
set wildmode=list:longest,full          " 補完モード
  "補完モード
  " ""              最初のマッチのみを補完する。
  " "full"          次のマッチを完全に補完する。最後のマッチの次には元の文字列が使われ、その次は再び最初のマッチが補完される
  " "longest"       共通する最長の文字列までが補完される。それ以上長い文字列を補完できないときは、次の候補に移る
  " "longest:full"  "longest" と似ているが、'wildmenu' が有効ならばそれを開始する
  " "list"          複数のマッチがあるときは、全てのマッチを羅列する。
  " "list:full"     複数のマッチがあるときは、全てのマッチを羅列し、最初のマッチを補完する
  " "list:longest"  複数のマッチがあるときは、全てのマッチを羅列し、共通する最長の文字列までが補完される

set shellslash                          " Windowsで"/"を有効
set virtualedit+=block                  " 矩形選択でカーソル位置の制限を解除

念のため、swapと上書き前のbackupはとるようにしている。(まぁ、今どきいらない気もしますが。)
その他は、説明の通り。

表示設定

"-------------------------------------------------------------------------------
" 表示設定
"-------------------------------------------------------------------------------
set number                              " 行番号の表示
set ruler                               " 右下に行・列の番号を表示
set title                               " タイトル表示
set list                                " 不可視文字を表示
set listchars=eol:\|,tab:>-,trail:-,extends:>,precedes:<,nbsp:%
                                        " 不可視文字の置き換え設定
set display=uhex                        " 表示できない文字を16進数で表示

set matchpairs& matchpairs+=<:>         " 対応括弧に<と>のペアを追加
set showmatch                           " 括弧の対応表示
set matchtime=1                         " 括弧の対応表示時間[1/10秒]

set laststatus=2                        " 常にステータスラインを表示
  "ステータスライン表示モード
  " "0"  一番下のウィンドウはステータスラインを表示しない
  " "1"  ウィンドウが1つの時はステータスラインを表示しない 2つ以上ある場合は、ステータスラインを表示する
  " "2"  常にステータスラインを表示する
set cmdheight=2                         " コマンドラインの高さ (gvimはgvimrcで指定)
set showcmd                             " 入力中のコマンドをステータスラインに表示

syntax on                               " シンタックスハイライト
set cursorline                          " カーソル行をハイライト
set cursorcolumn                        " カーソル位置のカラムのハイライト
set colorcolumn=80                      " 80行目に色を付ける
colorscheme jellybeans                  " カラースキーマ(gvimはgvimrcで指定)

set scrolloff=5                         " 上下5行の視界を確保
set sidescrolloff=16                    " 左右スクロール時の視界を確保
set sidescroll=1                        " 左右スクロールは一文字づつ行う
set backspace=indent,eol,start          " バックスペースでインデントや改行を削除可能
set whichwrap=b,s,h,l,<,>,[,]           " 左右移動で行跨ぎ可能

set nowrap                              " 折り返さない
set textwidth=0                         " テキストの最大幅を無効にする

set ambiwidth=double                    " 全角記号(○、□等)の位置ズレ対応

listcharsは、適当な記号に置き換えてもいい。80行目への色付けも好みの問題。
gvimの場合は、colorschemeはgvimrcに記載する必要がある。

検索/置換設定

"-------------------------------------------------------------------------------
" 検索/置換設定
"-------------------------------------------------------------------------------
set ignorecase                          " 大/小文字無視
set smartcase                           " ただし大文字を含む検索の場合は大/小文字有効
set incsearch                           " インクリメンタルサーチ有効
set hlsearch                            " 検索結果ハイライト表示
set wrapscan                            " 検索をファイルの先頭へループする
set gdefault                            " 置換の時 g オプションをデフォルトで有効

編集設定

"-------------------------------------------------------------------------------
" 編集設定
"-------------------------------------------------------------------------------
set clipboard=unnamed,autoselect        " OSクリップボード使用、選択時自動コピー

set tabstop=2                           " タブ幅
set softtabstop=2                       " タブ幅(編集時)
set shiftwidth=2                        " インデント幅

set smarttab                            " 行頭の<Tab>は"shiftwidth"、それ以外は"tabstop"
set shiftround                          " インデントをshiftwidthの倍数に丸める
set expandtab                           " タブの代わりにスペース
set autoindent                          " 前行に合わせてインデント
set smartindent                         " 前行の末尾に合わせてインデントを増減

プラグイン設定

"-------------------------------------------------------------------------------
" ファイルタイプ設定(off)
"-------------------------------------------------------------------------------
filetype off                            " ファイルタイプの自動検出off
filetype plugin off                     " ファイルタイプ別プラグインのロードoff
filetype indent off                     " ファイルタイプ別インデントのロードoff


"-------------------------------------------------------------------------------
" ランタイムパス設定
"-------------------------------------------------------------------------------
if has('vim_starting')
  set runtimepath+=~/vimfiles/bundle/neobundle.vim/
endif


"-------------------------------------------------------------------------------
" neobundle(プラグイン管理)
"-------------------------------------------------------------------------------
call neobundle#rc(expand('~/vimfiles/bundle/'))

NeoBundle 'Shougo/neobundle.vim'
"NeoBundle 'Shougo/vimproc', {
"      \ 'build' : {
"      \     'windows' : 'make -f make_mingw32.mak',
"      \     'cygwin' : 'make -f make_cygwin.mak',
"      \     'mac' : 'make -f make_mac.mak',
"      \     'unix' : 'make -f make_unix.mak',
"      \    },
"      \ }
NeoBundle 'Shougo/unite.vim'
NeoBundle 'Shougo/vimfiler'
NeoBundle 'Shougo/vimshell'

" reST編集
NeoBundle 'Rykka/riv.vim'

" zoom in/out
NeoBundle 'thinca/vim-fontzoom'

" textハイライト
NeoBundle 'HybridText'

" vim メモ
NeoBundle 'glidenote/memolist.vim'
NeoBundle 'fuenor/qfixgrep.git'

" カッコ付け
NeoBundle 'tpope/vim-surround'
  " This is a selected text.     →S[   → This is [a selected text'.]
  " This is (a surrounded text). →ds(  → This is a surrounded text.
  " This is 'a surrounded text'. →cs'( → This is ( a surrounded text ).

" 整形
NeoBundle 'vim-scripts/Align'

" ヤンク履歴利用
NeoBundle 'vim-scripts/YankRing.vim'

" ステータスラインのハイライト
NeoBundle 'itchyny/lightline.vim'

" colorscheme
NeoBundle 'nanotech/jellybeans.vim'
NeoBundle 'altercation/vim-colors-solarized'
NeoBundle 'therubymug/vim-pyte'
NeoBundle 'w0ng/vim-hybrid'
NeoBundle 'vim-scripts/twilight'
NeoBundle 'jonathanfilip/vim-lucius'
NeoBundle 'jpo/vim-railscasts-theme'
NeoBundle 'vim-scripts/Wombat'
NeoBundle 'tomasr/molokai'
NeoBundle 'vim-scripts/rdark'

NeoBundle 'ujihisa/unite-colorscheme'


NeoBundleCheck


"-------------------------------------------------------------------------------
" ファイルタイプ設定(on)
"-------------------------------------------------------------------------------
filetype on                             " ファイルタイプの自動検出on
filetype plugin on                      " ファイルタイプ別プラグインのロードon
filetype indent on                      " ファイルタイプ別インデントのロードon

プラグインの設定を反映させるために、ファイルタイプを一旦offにして、プラグインのロード後にonにする。
プラグイン管理には、neobundleを利用。導入するプラグインは適宜読み替える。
gvim(香り屋版)は、vimprocを含んでいるので、別途インストールする必要なし。

各種プラグインの設定

"-------------------------------------------------------------------------------
" unite
"-------------------------------------------------------------------------------
let g:unite_enable_start_insert = 0     " インサートモードで開始しない
let g:unite_source_file_mru_filename_format = ''
                                        " file_mruの表示フォーマットを指定。
                                        " 空にすると表示スピードが高速化される


"-------------------------------------------------------------------------------
" vimfiler
"-------------------------------------------------------------------------------
let g:vimfiler_as_default_explorer = 1  " vimデフォルトのエクスプローラをvimfilerで置き換える
let g:vimfiler_safe_mode_by_default = 0 " セーフモードを無効にした状態で起動する


"-------------------------------------------------------------------------------
" riv(reST編集用)
"-------------------------------------------------------------------------------
let g:riv_fold_level = 0
"let g:riv_web_browser = '"C:\Program Files\Google\Chrome\Application\chrome.exe"'
let g:riv_web_browser = '"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"'
let g:riv_temp_path = 1
let g:riv_html_code_hl_style = "friendly"


"-------------------------------------------------------------------------------
" HybridText(textハイライト用)
"-------------------------------------------------------------------------------
autocm BufEnter * if &filetype == "" || &filetype == "text" | setlocal ft=hybrid | endif


"-------------------------------------------------------------------------------
" memolist(メモ管理用)
"-------------------------------------------------------------------------------
let g:memolist_memo_suffix = "txt"
let g:memolist_template_dir_path = '~/vimmemo'
let g:memolist_memo_date = "%Y-%m-%d %H:%M"
"let g:memolist_memo_date = "epoch"
"let g:memolist_memo_date = "%D %T"
"let g:memolist_prompt_tags = 1
"let g:memolist_prompt_categories = 1
let g:memolist_qfixgrep = 1
let g:memolist_vimfiler = 1
let g:memolist_vimfiler_option = "-split -winwidth=50 -simple"
"let g:memolist_unite = 1
"let g:memolist_unite_source = "file_rec"
"let g:memolist_unite_option = "-auto-preview -start-insert"
let g:memolist_path = '~/vimmemo'
"let g:memolist_filename_prefix_none = 1


"-------------------------------------------------------------------------------
" lightline(ステータスラインのハイライト)
"-------------------------------------------------------------------------------
" ステータスラインの上書くを抑止
let g:unite_force_overwrite_statusline = 0
let g:vimfiler_force_overwrite_statusline = 0

" 以下からのコピペ
" http://d.hatena.ne.jp/itchyny/20130828/1377653592
let g:lightline = {
        \ 'colorscheme': 'wombat',
        \ 'mode_map': {'c': 'NORMAL'},
        \ 'active': {
        \   'left': [ [ 'mode', 'paste' ], [ 'fugitive', 'filename' ] ]
        \ },
        \ 'component_function': {
        \   'modified': 'MyModified',
        \   'readonly': 'MyReadonly',
        \   'fugitive': 'MyFugitive',
        \   'filename': 'MyFilename',
        \   'fileformat': 'MyFileformat',
        \   'filetype': 'MyFiletype',
        \   'fileencoding': 'MyFileencoding',
        \   'mode': 'MyMode'
        \ }
        \ }

function! MyModified()
  return &ft =~ 'help\|vimfiler\|gundo' ? '' : &modified ? '+' : &modifiable ? '' : '-'
endfunction

function! MyReadonly()
  return &ft !~? 'help\|vimfiler\|gundo' && &readonly ? 'x' : ''
endfunction

function! MyFilename()
  return ('' != MyReadonly() ? MyReadonly() . ' ' : '') .
        \ (&ft == 'vimfiler' ? vimfiler#get_status_string() :
        \  &ft == 'unite' ? unite#get_status_string() :
        \  &ft == 'vimshell' ? vimshell#get_status_string() :
        \ '' != expand('%:t') ? expand('%:t') : '[No Name]') .
        \ ('' != MyModified() ? ' ' . MyModified() : '')
endfunction

function! MyFugitive()
  try
    if &ft !~? 'vimfiler\|gundo' && exists('*fugitive#head')
      return fugitive#head()
    endif
  catch
  endtry
  return ''
endfunction

function! MyFileformat()
  return winwidth(0) > 70 ? &fileformat : ''
endfunction

function! MyFiletype()
  return winwidth(0) > 70 ? (strlen(&filetype) ? &filetype : 'no ft') : ''
endfunction

function! MyFileencoding()
  return winwidth(0) > 70 ? (strlen(&fenc) ? &fenc : &enc) : ''
endfunction

function! MyMode()
  return winwidth(0) > 60 ? lightline#mode() : ''
endfunction

プラグインごとに適当に。
lightlineを利用する際の注意として、unite/vimfilerのforce_overwrite_statuslineを無効にしておかないと、unite/vimfilerを利用した際、lightlineが有効にならない。(というか、上書かれる。)
(lightline公式の導入方法とかにも、注意として書いておいてくれればいいのに。。。)

マッピング/autocmd

"-------------------------------------------------------------------------------
" Mapping
"-------------------------------------------------------------------------------
"    map:キーシーケンスを展開したあと、さらに別のマップを適用
"noremap:一度だけ展開
"-------------------------------------------------------------------------------
" コマンド         ノーマル    インサート   コマンドライン      ビジュアル
" map/noremap         @            -              -                  @
" map!/noremap!       -            @              @                  -
" nmap/nnoremap       @            -              -                  -
" imap/inoremap       -            @              -                  -
" cmap/cnoremap       -            -              @                  -
" vmap/vnoremap       -            -              -                  @
"-------------------------------------------------------------------------------


"---------------------------------------
" Prefix
nnoremap [space]  <Nop>
nmap     <Space>  [space]
xmap     <Space>  [space]

nnoremap [Window]        <Nop>
nmap     <Space>w        [Window]

nnoremap [Tag]           <Nop>
nmap     <Space>t        [Tag]

nnoremap [unite]         <Nop>
nmap     <Space>u        [unite]

nnoremap [vimfiler]      <Nop>
nmap     <Space>f        [vimfiler]


"---------------------------------------
" uniteマッピング

"現在開いているファイルのディレクトリ下のファイル一覧。
"開いていない場合はカレントディレクトリ
nnoremap <silent> [unite]f :<C-u>UniteWithBufferDir -buffer-name=files file<CR>
" バッファ一覧
nnoremap <silent> [unite]b :<C-u>Unite buffer<CR>
" レジスタ一覧
nnoremap <silent> [unite]r :<C-u>Unite -buffer-name=register register<CR>
" 最近使用したファイル一覧
nnoremap <silent> [unite]m :Unite file_mru<CR>
" ブックマーク一覧
nnoremap <silent> [unite]c :<C-u>Unite bookmark<CR>
" ブックマークに追加
nnoremap <silent> [unite]a :<C-u>UniteBookmarkAdd<CR>
augroup vimrc
  autocmd FileType unite call s:unite_my_settings()
augroup END
function! s:unite_my_settings()
  "ESCでuniteを終了
  nmap <buffer> <ESC> <Plug>(unite_exit)
  "入力モードのときjjでノーマルモードに移動
  imap <buffer> jj <Plug>(unite_insert_leave)
  "入力モードのときctrl+wでバックスラッシュも削除
  imap <buffer> <C-w> <Plug>(unite_delete_backward_path)
  "sでsplit
  nnoremap <silent><buffer><expr> s unite#smart_map('s', unite#do_action('split'))
  inoremap <silent><buffer><expr> s unite#smart_map('s', unite#do_action('split'))
  "vでvsplit
  nnoremap <silent><buffer><expr> v unite#smart_map('v', unite#do_action('vsplit'))
  inoremap <silent><buffer><expr> v unite#smart_map('v', unite#do_action('vsplit'))
  "fでvimfiler
  nnoremap <silent><buffer><expr> f unite#smart_map('f', unite#do_action('vimfiler'))
  inoremap <silent><buffer><expr> f unite#smart_map('f', unite#do_action('vimfiler'))
endfunction


"---------------------------------------
" VimFilerマッピング

"現在開いているバッファのディレクトリを開く
nnoremap <silent> [vimfiler]e :<C-u>VimFilerBufferDir -quit<CR>
"現在開いているバッファをIDE風に開く
nnoremap <silent> [vimfiler]i :<C-u>VimFilerBufferDir -split -simple -winwidth=35 -no-quit<CR>
 
"デフォルトのキーマッピングを変更
augroup vimrc
  autocmd FileType vimfiler call s:vimfiler_my_settings()
augroup END
function! s:vimfiler_my_settings()
  nmap <buffer> q <Plug>(vimfiler_exit)
  nmap <buffer> Q <Plug>(vimfiler_hide)
endfunction


"---------------------------------------
" vimrc編集/反映
nnoremap [space]v :<C-u>tabedit $MYVIMRC<CR>
nnoremap [space]g :<C-u>tabedit $MYGVIMRC<CR>
nnoremap [space]s :<C-u>source $MYVIMRC<CR>
                     \ :source $MYGVIMRC<CR>

"---------------------------------------
" 半透明
autocmd GUIEnter * set transparency=220
autocmd FocusGained * set transparency=220
autocmd FocusLost * set transparency=128

"---------------------------------------
" インサートから抜けたら、IME解除
inoremap <silent> <ESC> <ESC>:set iminsert=0<CR>

"---------------------------------------
" 全角スペース表示
function! ZenkakuSpace()
  highlight ZenkakuSpace cterm=reverse ctermfg=darkgreen gui=reverse guifg=darkgreen
endfunction
if has('syntax')
  augroup ZenkakuSpace
    autocmd!
    autocmd ColorScheme                * call ZenkakuSpace()
    autocmd VimEnter,WinEnter,BufRead  * match ZenkakuSpace / /
  augroup END
endif

"---------------------------------------
" タブページ用
" 以下のサイトからの転用
" http://qiita.com/wadako111/items/755e753677dd72d8036d
" ---
" tp : 前のタブ
" tt : 次のタブ
" t1, t2,,,t9 : 左からn番目のタブにジャンプ
" tn : 新しいタブ
" tx : タブを閉じる
" ---
" ----- 転用ここから(一部変更) -----
" Anywhere SID.
function! s:SID_PREFIX()
  return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$')
endfunction

" Set tabline.
function! s:my_tabline()  "{{{
  let s = ''
  for i in range(1, tabpagenr('$'))
    let bufnrs = tabpagebuflist(i)
    let bufnr = bufnrs[tabpagewinnr(i) - 1]  " first window, first appears
    let no = i  " display 0-origin tabpagenr.
    let mod = getbufvar(bufnr, '&modified') ? '!' : ' '
    let title = fnamemodify(bufname(bufnr), ':t')
    let title = '[' . title . ']'
    let s .= '%'.i.'T'
    let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#'
    let s .= no . ':' . title
    let s .= mod
    let s .= '%#TabLineFill# '
  endfor
  let s .= '%#TabLineFill#%T%=%#TabLine#'
  return s
endfunction "}}}
let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()'
set showtabline=2 " 常にタブラインを表示

" The prefix key.
"nnoremap    [Tag]   <Nop>
"nmap    t [Tag]
" Tab jump
for n in range(1, 9)
  execute 'nnoremap <silent> [Tag]'.n  ':<C-u>tabnext'.n.'<CR>'
endfor
" t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ

map <silent> [Tag]n :tablast <bar> tabnew<CR>
" tc 新しいタブを一番右に作る
map <silent> [Tag]x :tabclose<CR>
" tx タブを閉じる
map <silent> [Tag]t :tabnext<CR>
" tn 次のタブ
map <silent> [Tag]p :tabprevious<CR>
" tp 前のタブ
" ----- 転用ここまで -----

"---------------------------------------
" window操作用
" wn  : 垂直分割(新規)
" ws  : 垂直分割(今のファイル)
" wvn : 水平分割(新規)
" wvs : 水平分割(今のファイル)
" <C-W>w : 次のウィンドウに移動
" <C-W>p : 前のウィンドウに移動
" <C-W>h : 左のウィンドウに移動
" <C-W>j : 下のウィンドウに移動
" <C-W>k : 上のウィンドウに移動
" <C-W>l : 右のウィンドウに移動
" <C-W>q : ウィンドウを閉じる

map <silent> [Window]n :new<CR>
map <silent> [Window]s :sp<CR>
map <silent> [Window]vn :vne<CR>
map <silent> [Window]vs :vs<CR>
"map <silent> [Window]w <C-W>w<CR>
"map <silent> [Window]p <C-W>p<CR>
"map <silent> [Window]h <C-W>h<CR>
"map <silent> [Window]j <C-W>j<CR>
"map <silent> [Window]k <C-W>k<CR>
"map <silent> [Window]l <C-W>l<CR>
"map <silent> [Window]x <C-W>q<CR>

nnoremap <silent> <S-Left>  <C-w>h<CR>
nnoremap <silent> <S-Down>  <C-w>j<CR>
nnoremap <silent> <S-Up>    <C-w>k<CR>
nnoremap <silent> <S-Right> <C-w>l<CR>

ここが、vimで自分らしさを発揮するところ。
上記は、個人的に役立ちそうなものを設定している。
vim初心者は、とりあえずvimrc編集/反映のマッピングだけ設定しておいて、あとは、必要になった段階で試考錯誤しながら、自分で追加するのが良いのではないでしょうか。

まとめ

よければ、ご参考までに。
認識が誤っている箇所、もっと良い方法があれば、コメントいただけると幸いです。

vimrc初心者向け(本人が初心者のため)

もろもろのサイトから集めた情報で作ってみたvimrc(Windows用)。
必要最低限にしておいて、あとは、適宜、修正する。

おすすめ!というわけではないが、これくらい設定しておけば、とりあえず、困らないと思われる。

あ、rivはreST編集用なので、不要なら外す。

scriptencoding cp932                    " このファイルのエンコード
set nocompatible                        " vi互換しない



"-------------------------------------------------------------------------------
" ファイルタイプ設定(off)
"-------------------------------------------------------------------------------
filetype off                            " ファイルタイプの自動検出off
filetype plugin off                     " ファイルタイプ別プラグインのロードoff
filetype indent off                     " ファイルタイプ別インデントのロードoff



"-------------------------------------------------------------------------------
" 内部エンコーディング設定
"-------------------------------------------------------------------------------
set encoding=cp932                      " 内部エンコーディング



"-------------------------------------------------------------------------------
" エンコーディング、ファイルフォーマット設定
"-------------------------------------------------------------------------------
set fileencoding=cp932                                     " 基本文字コード
set fileencodings=iso-2022-jp,cp932,sjis,euc-jp,utf-8      " 文字コード自動判別(優先順)
set fileformat=dos                      " 基本ファイルフォーマット
set fileformats=dos,unix,mac            " ファイルフォーマット自動判別(優先順)



"-------------------------------------------------------------------------------
" システム設定
"-------------------------------------------------------------------------------
set nobackup                            " backupファイルを作らない
set writebackup                         " ファイルの上書きの前にbackupファイルを作る
                                        " nobackupの場合は、上書きに成功したら削除される
set backupdir=~/vimfiles/backup         " backupファイルディレクトリ
set swapfile                            " swapファイルを作る
set directory=~/vimfiles/swap           " swapファイルディレクトリ

set confirm                             " 保存されていないファイルがあるとき、終了前に保存確認
set hidden                              " 保存されていないファイルがあるときでも、保存しないで他のファイルを表示
set autoread                            " 外部でファイルに変更がされた場合は読みなおす
set browsedir=buffer                    " ファイル保存時の場所を、開いているファイルが有る場所に設定

set noerrorbells                        " エラー音抑止(gvimはgvimrcで指定)
set novisualbell                        " ビジュアルベル抑止(gvimはgvimrcで指定)
set visualbell t_vb=                    " ビープ音抑止(gvimはgvimrcで指定)

set history=100                         " コマンド、検索履歴数
set infercase                           " 補完の際の大文字小文字の区別しない
set wildmenu                            " ファイル名補完有効
set wildmode=list:longest,full          " 補完モード
  "補完モード
  " ""              最初のマッチのみを補完する。
  " "full"          次のマッチを完全に補完する。最後のマッチの次には元の文字列が使われ、その次は再び最初のマッチが補完される
  " "longest"       共通する最長の文字列までが補完される。それ以上長い文字列を補完できないときは、次の候補に移る
  " "longest:full"  "longest" と似ているが、'wildmenu' が有効ならばそれを開始する
  " "list"          複数のマッチがあるときは、全てのマッチを羅列する。
  " "list:full"     複数のマッチがあるときは、全てのマッチを羅列し、最初のマッチを補完する
  " "list:longest"  複数のマッチがあるときは、全てのマッチを羅列し、共通する最長の文字列までが補完される

set shellslash                          " Windowsで"/"を有効
set virtualedit+=block                  " 矩形選択でカーソル位置の制限を解除



"-------------------------------------------------------------------------------
" 表示設定
"-------------------------------------------------------------------------------
set number                              " 行番号の表示
set ruler                               " 右下に行・列の番号を表示
set title                               " タイトル表示
set list                                " 不可視文字を表示
set listchars=eol:$,tab:>-,trail:-,extends:>,precedes:<,nbsp:%
                                        " 不可視文字の置き換え設定
set display=uhex                        " 表示できない文字を16進数で表示

set matchpairs& matchpairs+=<:>         " 対応括弧に<と>のペアを追加
set showmatch                           " 括弧の対応表示
set matchtime=1                         " 括弧の対応表示時間[1/10秒]

set laststatus=2                        " 常にステータスラインを表示
  "ステータスライン表示モード
  " "0"  一番下のウィンドウはステータスラインを表示しない
  " "1"  ウィンドウが1つの時はステータスラインを表示しない 2つ以上ある場合は、ステータスラインを表示する
  " "2"  常にステータスラインを表示する
set cmdheight=2                         " コマンドラインの高さ (gvimはgvimrcで指定)
set showcmd                             " 入力中のコマンドをステータスラインに表示

syntax on                               " シンタックスハイライト
set cursorline                          " カーソル行をハイライト
set cursorcolumn                        " カーソル位置のカラムのハイライト
"colorscheme desert                      " カラースキーマ(gvimはgvimrcで指定)

set scrolloff=5                         " 上下5行の視界を確保
set sidescrolloff=16                    " 左右スクロール時の視界を確保
set sidescroll=1                        " 左右スクロールは一文字づつ行う
set backspace=indent,eol,start          " バックスペースでインデントや改行を削除可能
set whichwrap=b,s,h,l,<,>,[,]           " 左右移動で行跨ぎ可能

set nowrap                              " 折り返さない
set textwidth=0                         " テキストの最大幅を無効にする

set ambiwidth=double                    " 全角記号(○、□等)の位置ズレ対応



"-------------------------------------------------------------------------------
" 検索/置換設定
"-------------------------------------------------------------------------------
set ignorecase                          " 大/小文字無視
set smartcase                           " ただし大文字を含む検索の場合は大/小文字有効
set incsearch                           " インクリメンタルサーチ有効
set hlsearch                            " 検索結果ハイライト表示
set wrapscan                            " 検索をファイルの先頭へループする
set gdefault                            " 置換の時 g オプションをデフォルトで有効



"-------------------------------------------------------------------------------
" 編集
"-------------------------------------------------------------------------------
set clipboard=unnamed,autoselect        " OSクリップボード使用、選択時自動コピー

set tabstop=2                           " タブ幅
set softtabstop=2                       " タブ幅(編集時)
set shiftwidth=2                        " インデント幅

set smarttab                            " 行頭の<Tab>は"shiftwidth"、それ以外は"tabstop"
set shiftround                          " インデントをshiftwidthの倍数に丸める
set expandtab                           " タブの代わりにスペース
set autoindent                          " 前行に合わせてインデント
set smartindent                         " 前行の末尾に合わせてインデントを増減



"-------------------------------------------------------------------------------
" ランタイムパス設定
"-------------------------------------------------------------------------------
if has('vim_starting')
  set runtimepath+=~/vimfiles/bundle/neobundle.vim/
endif



"-------------------------------------------------------------------------------
" neobundle
"-------------------------------------------------------------------------------
call neobundle#rc(expand('~/vimfiles/bundle/'))

NeoBundle 'Shougo/neobundle.vim'
NeoBundle 'Shougo/vimproc'
"NeoBundle 'Shougo/vimproc', {
"      \ 'build' : {
"      \     'windows' : 'make -f make_mingw32.mak',
"      \     'cygwin' : 'make -f make_cygwin.mak',
"      \     'mac' : 'make -f make_mac.mak',
"      \     'unix' : 'make -f make_unix.mak',
"      \    },
"      \ }
NeoBundle 'Shougo/unite.vim'
NeoBundle 'nanotech/jellybeans.vim'
NeoBundle 'Rykka/riv.vim'

NeoBundleCheck



"-------------------------------------------------------------------------------
" ファイルタイプ設定(on)
"-------------------------------------------------------------------------------
filetype on                             " ファイルタイプの自動検出on
filetype plugin on                      " ファイルタイプ別プラグインのロードon
filetype indent on                      " ファイルタイプ別インデントのロードon



"-------------------------------------------------------------------------------
" riv
"-------------------------------------------------------------------------------
let g:riv_fold_level = 1
let g:riv_web_browser = '"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"'
let g:riv_temp_path = 0
let g:riv_html_code_hl_style = "friendly"



"-------------------------------------------------------------------------------
" mapping e.t.c.
"-------------------------------------------------------------------------------

"---------------------------------------
" Space prefix
nnoremap [space] <Nop>
nmap     <Space> [space]
xmap     <Space> [space]

"---------------------------------------
" vimrc編集/反映
nnoremap [space]v :<C-u>tabedit $MYVIMRC<CR>
nnoremap [space]g :<C-u>tabedit $MYGVIMRC<CR>
nnoremap [space]s :<C-u>source $MYVIMRC<CR>
                     \ :source $MYGVIMRC<CR>

"---------------------------------------
" インサートから抜けたら、IME解除
inoremap <silent> <ESC> <ESC>:set iminsert=0<CR>

"---------------------------------------
" 全角スペース表示
function! ZenkakuSpace()
  highlight ZenkakuSpace cterm=reverse ctermfg=darkgreen gui=reverse guifg=darkgreen
endfunction
if has('syntax')
  augroup ZenkakuSpace
    autocmd!
    autocmd ColorScheme                * call ZenkakuSpace()
    autocmd VimEnter,WinEnter,BufRead  * match ZenkakuSpace / /
  augroup END
endif

"---------------------------------------
" タブページ用
" 以下のサイトからの転用
" http://qiita.com/wadako111/items/755e753677dd72d8036d
" ---
" tp で前のタブ、tn で次のタブ
" t1, t2,,,t9 で左からn番目のタブにジャンプ
" tc で新しいタブ, txでタブを閉じる
" ---
" ----- 転用ここから -----
" Anywhere SID.
function! s:SID_PREFIX()
  return matchstr(expand('<sfile>'), '<SNR>\d\+_\zeSID_PREFIX$')
endfunction

" Set tabline.
function! s:my_tabline()  "{{{
  let s = ''
  for i in range(1, tabpagenr('$'))
    let bufnrs = tabpagebuflist(i)
    let bufnr = bufnrs[tabpagewinnr(i) - 1]  " first window, first appears
    let no = i  " display 0-origin tabpagenr.
    let mod = getbufvar(bufnr, '&modified') ? '!' : ' '
    let title = fnamemodify(bufname(bufnr), ':t')
    let title = '[' . title . ']'
    let s .= '%'.i.'T'
    let s .= '%#' . (i == tabpagenr() ? 'TabLineSel' : 'TabLine') . '#'
    let s .= no . ':' . title
    let s .= mod
    let s .= '%#TabLineFill# '
  endfor
  let s .= '%#TabLineFill#%T%=%#TabLine#'
  return s
endfunction "}}}
let &tabline = '%!'. s:SID_PREFIX() . 'my_tabline()'
set showtabline=2 " 常にタブラインを表示

" The prefix key.
nnoremap    [Tag]   <Nop>
nmap    t [Tag]
" Tab jump
for n in range(1, 9)
  execute 'nnoremap <silent> [Tag]'.n  ':<C-u>tabnext'.n.'<CR>'
endfor
" t1 で1番左のタブ、t2 で1番左から2番目のタブにジャンプ

map <silent> [Tag]c :tablast <bar> tabnew<CR>
" tc 新しいタブを一番右に作る
map <silent> [Tag]x :tabclose<CR>
" tx タブを閉じる
map <silent> [Tag]n :tabnext<CR>
" tn 次のタブ
map <silent> [Tag]p :tabprevious<CR>
" tp 前のタブ
" ----- 転用ここまで -----

Pythonでグラフを書く(Windows)

Windows端末で、Pythonを使ってグラフを書くことをめざす。

最終的には、Linuxサーバのリソースデータ(sar、vmstat e.t.c.)をPythonでパースしてグラフ化したい。グラフ化には、Matplotlibを使うのが良さそう。

なので、以下、インストール時のメモ。

準備(インストール)

インストール

  1. Pythonのインストール
  2. Numerical Python
    • > easy_install numpy
      • しかし、エラー発生。Unable to find vcvarsall.bat
      • 少し調べたところ、Visual C++ 2008 Express Editionをインストールすればいいらしい。
    • もろもろ面倒なので、easy_installを利用せず、インストーラを使うことにする。
    • 64bit用のインストーラは、Officialでは用意されていないので、以下のサイトから取得する。
  3. Matplotlib
  4. dateutil
    • > easy_install dateutil
  5. Pyparsing
    • > easy_install pyparsing

使ってみる

以下のサイトあたりから、適当なグラフを書いてみる。

http://kaiseki-web.lhd.nifs.ac.jp/wiki/index.php/Matplotlib_%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E9%9B%86

無事にグラフが表示されれば、完了。

Python環境の構築 in Windows7

Windows7環境にPython開発環境を構築した時のメモ。

資材

インストール

  1. Python
  2. setuptools
    • ez_setup.pyを実行
      • あとは、勝手にソースを落としてきて、インストールしてくれる。

完了。
あとは、必要なパッケージがあれば、

> easy_install numpy

とかを実行すれば良い。

追記(2014/1/19)

どうやら、pipもインストールしておいた方が便利そうなので、追加。

easy_install pip

インストールできたら、以下のようなコマンドが利用可能。

pip freeze

インストールされているPythonパッケージのリストアップ。

pip install [パッケージ名]
pip uninstall [パッケージ名]

パッケージのインストール/アンインストール。

reStructuredText(reST)を編集するvim環境(Windows)

目的

Windows端末上で、vimを使ってreStructuredTextで文章を書く環境を作成する。

検討

vimに、reStructuredTextで編集するのに便利なプラグイン等を導入することを検討する。

大は小を兼ねるということで、とりあえず、riv.vimを導入してみる。
合わせてプラグイン管理も導入する。
今は、neobundleが流行っているらしいので、これにしよう。
その際、gitも必要になるので、合わせてインストールする。

また、vim上で編集中のreStructuredText形式のファイルをすぐにプレビューできたほうがよい。

なので、html形式に変換してブラウザでプレビューできる環境を整える。
reST形式から、html形式への変換には、Docutilsを使う。

インストール資材

インストール

  1. gitのインストール
    • 解答して、binにPathを通す。
  2. vimのインストール
    • 解凍して、完了。
  3. neobundleの導入
    • 取得
      • > git clone git://github.com/Shougo/neobundle.vim ~/vimfiles/bundle/neobundle.vim
    • ~/_vimrcの編集
      • 編集内容は後述
    • vim起動
    • :NeoBundleInstall
  4. riv.vimのインストール
    • neobundleを使ってインストール。vimrcに追加するだけ。
  5. Pythonのインストール
    • インストーラでインストール後、Pathを通す。
  6. Docutilsをインストール
  7. Pygmentsをインストール

Pythonのeasy_installが利用できるなら、

> easy_install docutils
> easy_install pygments

でよい。


~/_vimrcには、以下を追記する。
なお、gitコマンドが、なぜか環境変数のPathに追加するだけでは、vimから実行できなかったため、ここでPathに追加している。
ポータブル版にした影響か?

let $PATH = $PATH . ';$GIT_HOME\bin'

set nocompatible
filetype off

if has('vim_starting')
  set runtimepath+=~/vimfiles/bundle/neobundle.vim/
endif

call neobundle#rc(expand('~/vimfiles/bundle/'))

NeoBundle 'Shougo/neobundle.vim'
NeoBundle 'Rykka/riv.vim'

filetype plugin on
filetype indent on

reST用プラグインの利用

vimを使って、reSTで文章を記載する際、モードラインを利用して、切り替える。
そのために、文頭or文末に以下を追加する。

# vim:set ft=rst:

あとは、riv.vimのマニュアル参照。

プレビューの利用

riv.vimでは、Docutilsを利用して、htmlに変換後、ブラウザで表示する機能が用意されている。

が、Windows7上に構築したこの環境では、エラーになり、うまく行かなかった。
どうやら、Docutils(rst2html.py)でhtmlに変換するところでエラーになっている様子。

とりあえず、以下のように修正することで、なんとか動くようになった。

修正ファイル
~\vimfiles\bundle\riv.vim\autoload\riv\publish.vim

修正前↓(171-173行)

    call s:sys( exe." ". style ." ". args ." "
                \.shellescape(input) 
                \." > ".shellescape(output) )

修正後↓

    call s:sys( exe." ". style ." ". args ." "
                \.shellescape(input) 
                \." ".shellescape(output) )

さらに、ブラウザ呼び出し部分でもエラーになったので、そこも合わせて修正。

修正前↓(248-250行目)

        else
            call s:sys(g:riv_web_browser . ' '. shellescape(out_file) . ' &')
        endif

修正後↓

        else
            call s:sys(g:riv_web_browser . ' '. shellescape(out_file) )
        endif


最後に、riv.vimのdefaultの表示用ブラウザが、Firefoxになっているので、Chromeに変更するため、_vimrcファイルに追加する。

"---------------------------------------------------------------------------
" riv
let g:riv_fold_level = 1
let g:riv_web_browser = '"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"'
let g:riv_temp_path = 0
let g:riv_html_code_hl_style = "friendly"

ついでに、ちょこちょこと設定している。
あとは、

:Riv2HtmlAndBrowse

とすれば、編集中のreSTファイルをブラウザでプレビューすることができる。


なお、riv.vimを利用しなくても、Docutilsを利用して、htmlに変換しブラウザで表示するような関数を定義してやれば、プレビューは可能。

例えば、
~\vimfiles\bundle\riv.vim\ftplugin\rst\riv.vim
に、以下のようにすれば良い。
(引用元:http://www.hexacosa.net/blog/detail/41/

python << EOF
from docutils.core import publish_file
import os
import tempfile
import time
import webbrowser
import vim
def Rst2Web():
    src_fo = open(vim.current.buffer.name)
    dst = tempfile.mkstemp(suffix='.html')
    dst_fo = os.fdopen(dst[0], 'w')
    dst_filename = dst[1]
    print dst_filename
    out = publish_file(src_fo, '.', dst_fo, '.', writer_name='html')
    webbrowser.open(dst_filename)
    time.sleep(3)
    os.remove(dst_filename)
EOF
ca rst2web :py Rst2Web()

この場合は、実行時に

:rst2web

とすれば良い。

最後に

これで、vimのreST用プラグインの導入と、プレビュー環境の構築が完了。