Vim for Windows セットアップメモ

前置き

タイトル通りです。Clojureプログラマ向けのプラグインも少し紹介します。

私にとってvimは、第5か第6のエディタ(これから順位が上がる予定)なので、勘違いとか慣習に反することをやっている可能性は高いです。

パッケージ

香り屋さんが配布しているパッケージを使います。

インストールは、zipを解凍して、適当なフォルダへ置くだけです。私の場合、C:\wintls32\vim74の下にgvim.exeなどが来るようにしました。

C:\wintls32\vim74\
  gvim.exe
  vim.exe
  ...

私は、もっぱらGUI版のgvim.exeの方を使います。本記事の内容にも、vim.exeの方には当てはまらない記述があるかもしれません。

管理ファイル

$USERPROFILE\
  _vimrc
  _gvimrc
  vimfiles\
    autoload\
    colors\
    ...

これらのファイルやフォルダは存在しないので、自分で作ります。_vimrcについては、vimを起動して、:mkvimrc とやればスケルトンが(インストール先フォルダに)自動生成されるので、それを使っても良いでしょう。

rcファイル

gvim.exeを使うんなら _gvimrc だけメンテすれば良さそうなもんですが、どうも、そうではないようです。試行錯誤か、ググるか、:helpを丹念に読むか……。いまのとこ、こんな感じです。

_vimrc
scriptencoding utf-8
set encoding=utf-8
set fileencodings=utf-8,sjis,euc-jp
set fileformats=dos,unix,mac

execute pathogen#infect()
syntax on
filetype plugin indent on

let g:lightline = {
      \ 'colorscheme': 'wombat',
      \ 'component': {
      \   'readonly': '%{&readonly?"\u2b64":""}',
      \ },
      \ 'separator': { 'left': "\u2b80", 'right': "\u2b82" },
      \ 'subseparator': { 'left': "\u2b81", 'right': "\u2b83" }
      \ }
_gvimrc
scriptencoding utf-8
set encoding=utf-8
set fileencodings=utf-8,sjis,euc-jp
set fileformats=dos,unix,mac

set t_Co=256
colorscheme slate
"colorscheme evening

let g:rbpt_colorpairs = [
    \ ['brown',       'RoyalBlue3'],
    \ ['Darkblue',    'SeaGreen3'],
    \ ['darkgray',    'DarkOrchid3'],
    \ ['darkgreen',   'firebrick3'],
    \ ['darkcyan',    'RoyalBlue3'],
    \ ['darkred',     'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['brown',       'firebrick3'],
    \ ['gray',        'RoyalBlue3'],
    \ ['black',       'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['Darkblue',    'firebrick3'],
    \ ['darkgreen',   'RoyalBlue3'],
    \ ['darkcyan',    'SeaGreen3'],
    \ ['darkred',     'DarkOrchid3'],
    \ ['red',         'firebrick3'],
    \ ]
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces

let g:clojure_highlight_references = 1

let g:clojure_align_multiline_strings = 1

set relativenumber
set number
set ambiwidth=single
set list lcs=tab:>\ ,eol:$,trail:.

set guifont=Consolas:h11
set guifontwide=MS_Gothic:h11

winpos 800 0
set lines=40 columns=100

ほとんどは、プラグイン向けの設定です(後述)。その他では、特殊文字を可視化するための設定が要チェックかもしれません。

set ambiwidth=single
set list lcs=tab:>\ ,eol:$,trail:.

タブ(tab)、行末(eol)、及びスペースで終わる行(trail)を代替文字で可視化しています。代替文字には、¶ や » のような記号を指定することも可能です。記号を入力するには、vimのdigraph機能を使います(<C-K>に続けて2文字を入力する)。以下に例を示しますが、:digraph とやれば、一覧を表示することもできます。

<C-K>>>      " ≫
<C-K>PI      " ¶
<C-K>.M      " ・
<C-K>ul     " ┘

こんな感じです。

digraph

プラグイン管理する

pathogen

プラグイン管理には、pathogenというツールを使います。vundleとかneovundleという同種のツールも人気みたいですが、成り行きでpathogenになりました。

まず、GitHubからpathogen.vimをダウンロードして、vimfiles\autoloadの下に置きます。

次に、_vimrcを編集します。

_vimrc
execute pathogen#infect()
syntax on
filetype plugin indent on

あとは、使いたいプラグインを vimfiles\bundleの下に置くだけです。

$USERPROFILE\vimfiles\bundle\
  lightline.vim\
  rainbow_parentheses.vim\
  vim-clojure-highlight\
  vim-clojure-static\
  vim-fireplace\

gitコマンドが使えるなら、コマンドプロンプトでGitHubからcloneするのが簡単でしょう。

> cd $USERPROFILE\vimfiles\bundle
> git clone https://github.com/itchyny/lightline.vim.git

Python

プラグインが、Pythonで書かれている場合があります(普通は、VimScript)。後述のvim-fireplaceがその例です。このようなプラグインを実行するには、vim本体のコンパイル時に使われたのと同じバージョンのPythonを使用環境にもインストールしておく必要があります。

vimコンパイル時のPythonバージョンは、以下のコマンドで調べることができます。

python import sys; print(sys.version)

ステータス行を飾るlightline.vim

ステータス行を見やすくするプラグインです。vim-powerline というのが元祖で、他にもpowerlineやvim-airlineなどがありますが、試行錯誤の結果、lightline.vimを採用しました。

ちゃんと表示させるには、フォントにパッチを当てる必要があり、そのためのツールも提供されているのですが、面倒くさいので、パッチ済みフォントをダウンロードして使います。私の場合、powerline-consolasというやつを選びました。これは、vim-powerline仕様のConsolasです。パッチには、vim-powerline仕様とpowerline仕様があるので注意しましょう。lightline.vimは、両方に対応しています。

フォントをWindowsにインストールしたら、rcファイルを編集します。

_vimrc
let g:lightline = {
      \ 'colorscheme': 'wombat',
      \ 'component': {
      \   'readonly': '%{&readonly?"\u2b64":""}',
      \ },
      \ 'separator': { 'left': "\u2b80", 'right': "\u2b82" },
      \ 'subseparator': { 'left': "\u2b81", 'right': "\u2b83" }
      \ }

U+2B64といった文字コードは、vim-powerline仕様です。ググれば、一覧表が見つかるでしょう。powerline仕様とはコードが違います(あっちはU+E0A2とか)。

_gvimrc
set guifont=Consolas:h11
set guifontwide=MS_Gothic:h11

Consolasは欧文フォントなので、和文向けのフォントも指定する必要があります。

うまくいけば、こんな感じで表示されるはずです。

lightline

括弧を色付けるrainbow_parentheses.vim

Clojueのコーディングに便利なプラグインです。

_gvimrc
let g:rbpt_colorpairs = [
    \ ['brown',       'RoyalBlue3'],
    \ ['Darkblue',    'SeaGreen3'],
    \ ['darkgray',    'DarkOrchid3'],
    \ ['darkgreen',   'firebrick3'],
    \ ['darkcyan',    'RoyalBlue3'],
    \ ['darkred',     'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['brown',       'firebrick3'],
    \ ['gray',        'RoyalBlue3'],
    \ ['black',       'SeaGreen3'],
    \ ['darkmagenta', 'DarkOrchid3'],
    \ ['Darkblue',    'firebrick3'],
    \ ['darkgreen',   'RoyalBlue3'],
    \ ['darkcyan',    'SeaGreen3'],
    \ ['darkred',     'DarkOrchid3'],
    \ ['red',         'firebrick3'],
    \ ]
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces

括弧の対応が分かりやすくなります。

rainbow

Clojure向けプラグイン

vim-clojure-static

  • シンタックスハイライト
  • カスタマイズ可能なオートインデント
  • 自動補完(<C-X><C-O>と<C-X><C-U>)
_gvimrc
let g:clojure_align_multiline_strings = 1

rcファイルの編集は必須ではありませんが、上記の変数を1に設定しておけば、複数行にわたるdocstringのインデントを調整してくれます。

docstring

インデントは、ある程度カスタマイズも可能みたいです。例えば、lispwordsオプションに任意の単語をカンマ区切りで登録しておけば、半角スペース2つでインデントされます。

_vimrc
autocmd FileType clojure
    \ setlocal lispwords+=fact,facts,future-fact,future-facts,prerequisite,prerequisites,provided

同じことを正規表現で指定することもできます。

_vimrc
let g:clojure_fuzzy_indent = 1
let g:clojure_fuzzy_indent_patterns = ['^\(future-\)\?facts\?$', '^prerequisites\?$']

メタ文字の前でエスケープしないといけない(vim特有?)のが面倒ですが…。

vim-clojure-highlight

vim-clojure-staticのシンタックスハイライトを拡張し、参照している他namespaceのシンボルもハイライトしてくれます。ただし、後述のvim-fireplaceを使ってnREPLと接続しておく必要があります。

_gvimrc
let g:clojure_highlight_references = 1

vim-fireplace

vimをnREPLクライアント化する他、Clojureプログラミングに便利な機能が満載のプラグインです。

rcファイルの編集は不要です。nREPLサーバを別途用意する必要がありますが、lein repl しておけば勝手に探して接続してくれます。

機能満載なので、使い方については別の記事「VimでClojureプログラミング」を参照して下さい。

また、残念ながら、Android用のnekoライブラリが提供するnREPLサーバとは相性が悪いようです。これが無ければ、Eclipseからgvimに乗り換えたいところなんですけどね。

その他

:e $MYVIMRC        " _vimrcを編集。
:e $MYGVIMRC       " _gvimrcを編集。
:scriptnames       " ロード済みのプラグイン一覧を表示。

:reg               " レジスタ一覧。
  • ヤンクした文字列をコマンドラインにペーストしたいときは、<C-R>に続けてレジスタ名("とか*とか)
  • ビジュアルモードで選択して<C-Insert>すればWindowsのクリップボードへコピー(MacならCommand-C)

チートシート

チートシートです。あまりにも基本的なコマンドは載せてません。

cheat

Last modified:2014/04/04 10:33:13
Keyword(s):
References:[Clojure開発環境] [VimでClojureプログラミング] [Windowsリテラシ]
This page is frozen.