neocomplcache 導入してみた

Vim では [Ctrl-n] での補完機能や、[Ctrl-x][Ctrl-o] でのオムニ補完が使えるので、プログラミングで直接タイプする量は、IDE 使っているときと余り変わりません。


でも、Visual Studio の IntelliSence に慣れた身としては、補完候補を表示するためにわざわざキーなんて押したくないのが本音。ぶっちゃけると、私は Ctrl キーを押すが苦手なのです。IntelliSence みたいに、自動でポップアップしてほしい。


そんな小指に気合いが足りていない私にぴったりなのが、『neocomplcache』という Vim プラグイン。強力な補完機能を提供してくれます。

上記ページからダウンロードしたら、vimfiles フォルダ下に配置します。インストール方法は他の Vim プラグインとなんら変わりはありません。


注意点として、neocomplcache はデフォルトでは無効になっているようなので、_vimrc を編集して有効にしておく必要があります。ついでに、設定もいくつか追記しておくといいです。とりあえず、ヘルプに書いてある設定をほぼ丸ごとコピー。

"neocomplcache を有効にする
let g:neocomplcache_enable_at_startup = 1
"neocomplcache の smart case 機能を有効にする
let g:neocomplcache_enable_smart_case = 1
"neocomplcache の camel case 機能を有効にする
let g:neocomplcache_enable_camel_case_completion = 1
"_区切りの補完を有効にする
let g:neocomplcache_enable_underbar_completion = 1
"シンタックスをキャッシュするときの最小文字長を設定する
let g:neocomplcache_min_syntax_length = 3


Vim を起動して文字をタイプすると、自動で補完候補が表示されます。
f:id:griefworker:20101118152930p:image

こいつぁステキだ。


neocomplcache を使いこなしたい人は、Vim-users.jp に neocomplcache の解説やハックが掲載されているので、目を通しておくと良さそうです。

私もこれからいろいろ弄ってみます。

VisualStudio のエディタを Vim 化する無料のプラグイン『VsVim』

以前 Visual Studio(以下 VS) のエディタを Vim 化する有償プラグイン『ViEmu』を紹介したけど、オープンソースの同じようなプラグインの存在を今日知った。

VS2010 で利用可能な拡張機能。インストールすると VS2010 のエディタが Vim 化される。

モードの切り替えもできるし、hjkl でカーソル移動もできる。キーバインドVim とだいたい同じ。Vim に慣れて、VS でもついつい Vimキーバインドで操作しようとしてしまう自分としては、「自作しようかな」とまで考えたほど欲しかったプラグイン。

動作が多少重いけど、まぁ許容できる範囲。まだ Vim の基本操作しかできないけど、VS のインテリセンスが組み合わされば十分便利だ。なにより、無料でオープンソースなのがうれしい。

自分にとって、CodeRush や ReShaper よりも重要なプラグインになるかもしれない。

Vimで文字数を数える

ビジュアルモードで文字数を数えたい範囲を選択して

:'<,'>s/./&/gn

を実行すれば

472 箇所置換しました (計 16 行内)

という風に、選択範囲の文字数がわかる。ちなみに上記の数字は、はてな記法のときの本エントリの文字数。

『.』 は改行以外の1文字を意味し、『&』はマッチした文字列を意味するので、各文字を自分自身で置換することになり、テキストの内容は変わらない。

Vim は置換した文字数を表示してくれるので、その機能を悪用したわけだ。ただ、置換した文字のハイライトが有効な場合、全文がハイライトされてしまうのが難点。

コマンド打つのが面倒な人には

文字数を数えてステータスラインに表示する Vim スクリプトがオススメ。

バッファを保存したタイミングで、表示する文字数を更新してくれる。かなり便利。

Vim Intellisense もっとガンバレ

VimVisual Studio みたいなインテリセンス機能が使えるようになる、ステキな Vim プラグインが SourceForge で開発されている。その名も『Vim Intellisense』。


C# だけでなく、C++Java、HTML などにも対応している。普段 Visual Studio で仕事をしていて、インテリセンスにどっぷり依存している私にとって、夢のようなプラグインだ。しかも無料。


……喜々としてインストールしたものの、Vista + 香り屋版 GVim な私の環境では、上手く動作してくれなかった。クラスのメンバが表示されないし、唯一表示された名前空間の入力でさえ、表示されるまでにだいぶ間がある。あと、表示される候補が .NET Framework 2.0 当時のもので古い。今のままじゃ全く使えないな。


どうしても Vim .NET 開発が行いたいなら、有料 Visual Studio アドインの ViEmu/VS が最有力。だけど .NET に限らず他の言語(RubyPython とか)でも、Vim でインテリセンスが使えるようになれば、Vim での生産性が大きく上がるだろうな。だって、いちいちオムニ補完を表示するためにキーを押すのって面倒だし。対応言語が増えればの話だけど。


Vim Intellisense の今後に期待。

Visual Studio と Vim の連携

PythonGoogle App Engine でプログラミングするようになってから、Vim を使う機会が増えました。まぁ、仕事では相変わらず Visual Studio(以下 VS) を使っていますが…。

で、「この際、Vim をマスターするために VS と連携させてしまおう」と考えました。VS のインテリセンスは超便利なので、ソースコードを0から書くのは VS、編集は Vim、という風に使い分けるところから始めようかと。

VS の「外部ツール登録...」で次の内容を登録すれば、編集中のファイルを Vim で開けるようになります。

タイトル Vim
コマンド C:\Program Files\Vim\gvim.exe
引数 $(ItemPath) +$(CurLine)
初期ディレクトリ $(ItemDir)

Vim のパスは環境に合わせて書き変えて下さい。

ちなみに、Vimコマンドラインオプションは次のコマンドで確認できます。

:help -r

GVimのウィンドウサイズを保存・復元したい

GVim の「終了時にウィンドウサイズを保存し次回起動時に復元する方法」を探していたら、次の記事を発見。

.gvimrc に記述する内容を引用。

let g:save_window_file = expand('~/.vimwinpos')
augroup SaveWindow
  autocmd!
  autocmd VimLeavePre * call s:save_window()
  function! s:save_window()
    let options = [
      \ 'set columns=' . &columns,
      \ 'set lines=' . &lines,
      \ 'winpos ' . getwinposx() . ' ' . getwinposy(),
      \ ]
    call writefile(options, g:save_window_file)
  endfunction
augroup END

if filereadable(g:save_window_file)
  execute 'source' g:save_window_file
endif
Vim-users.jp - Hack #120: gVim でウィンドウの位置とサイズを記憶する

私の環境は Windows なので、_gvimrc に記述しています。

ウィンドウサイズを保存・復元するための VimScript を書く必要があるのは面倒ですね。私はてっきり、GVim にオプションが用意されていると思っていました。残念。

Vim でファイルの種類に応じて設定を変更する

ファイルの種類によって Vim の設定を変えたい

例えば、タブ幅を Ruby の場合は 2、C# の場合は 4 にするには、言語専用の設定ファイル(?)を作成すればいいです。

ファイルの書式は _vimrc と同じ

先の例にある「Ruby のタブ幅を 2 にしたい」場合は

set tabstop=2
set softtabstop=2
set shiftwidth=2

と書けばいいです。

ファイル名に注意!

Ruby の場合は ruby.vimC# の場合は cs.vim になります。Vim のインストールフォルダ内に ftplugin フォルダがあるので、そのフォルダ内にあるファイルと同じ名前にします。

拡張子が名前になっているものが多いですね。

作成したファイルを置く場所

Windows XP なら

C:\Documents and Settings\ユーザー名\vimfiles\after\ftplugin

に置きます。

Windows Vista なら

C:\Users\ユーザー名\vimfiles\after\ftplugin

に置きます。

Windows 7 はまだ触ってないので分かりません。