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

KaoriYa 版で追加される機能まとめ

KaoriYa 版 Vim では日本語を使う際に便利な patch が多数当てられている。patch 自体は本体に付属しているが、そこ以外で本体との差分をまとめたものが見当たらなかったので、patch を参考に本家からの変更点をまとめてみた。
足りない部分や勘違いしている部分がある可能性があるので、突っ込み歓迎。

確認に使ったバージョン

Vim 7.2-20090321 香り屋版

runtime

syntax/memo.vim

新規に追加。どんなものかは README_w32j.txt を開いてみればわかる(このファイルが ft=memo に設定されている)。

syntax/java.vim

javadoc コメント内の最初の一文は専用の色でハイライトされるが、"." だけでなく "。" で終わる部分も文として認識するように修正されている。

syntax/2html.vim

ftp://~ にもリンクが張られるようになる。

option

'ambiwidth' 'ambw'

値として "auto" が使えるようになる。これにより→などの微妙な記号の幅の扱いがより適切になる。今のところ GUIWindows 限定。

'charspace' 'csp'

追加のグローバルオプション。Windows 限定。横方向の文字と文字の間隔を設定できる。負数も指定可能。初期値は 0。

'fileencodings' 'fencs'

'fileencodings' に "guess" が使えるようになる。これを設定しておくと、"cp932" "euc-jp" "iso-2022-jp" "utf-8" のどれかから自動判別してくれる。誤認率が減る。

'guioptions' 'go'

値として "C" が使えるようになる。Windows 限定。これを使うと、キャプションバーが消える。更にメニューバーやツールバーを消すと、こうなる。

'migemo' 'mgm'

バッファについてローカルな真偽値の追加オプション。+migemo が入ると g/ で migemo 検索を開始できるが、 g? は通常 Rot13 オペレータになっている。このオプションを有効にすると g? が逆向きの migemo 検索を開始するコマンドになる。デフォルトは無効。
余談だけど昔このオプションの効果を知らずにとりあえず有効にしていたら、誰かさんが張りつけた Rot13 文字列を解除できなくてぐわーってなったので今は無効にしてある。私は元々 ?(逆向き検索) を使わないし。

'migemodict' 'mgd'

追加のグローバルオプション。migemo 用の辞書ファイルの位置を指定する。migemo を使いたい場合は設定必須。デフォルトは空。
辞書関連のファイルのエンコードは 'encoding' の値と合わせておく必要があるみたい。

'modeline' 'ml'

通常モードライン(ファイルの先頭や末尾にある vim:fenc=utf8 みたいな文字列) に 'fileencoding' を指定するとファイルを開いた後で 'fileencoding' が再設定されるので期待した動作にならないんだけど、'fileencoding' を特別扱いして読み直してくれるようになる。

'transparency' 'tra'

追加のグローバルオプション。Windows 限定。ウィンドウの透明度を 0 〜 255 の間で設定する。範囲外の値を設定した場合は 255 が設定される。デフォルトは 255。

function

migemo()

ローマ字の文字列からそのローマ字の読みにヒットする正規表現を返す。もちろんちゃんと Vim で使える正規表現

feature

+guess_encode

'fileencodings' に "guess" が使えるようになる。

+kaoriya

これにより、vimrc で KaoriYa 版かどうか判定できる。

if has('kaoriya')
  " something...
endif
+migemo (+migemo/dyn)

migemo の各種機能 (g/ g?、'migemo' 'migemodict' オプション、migemo() 関数) が使えるようになる。

その他

  • sentence (:help sentence) の定義として "、" や "。" も使うようになる。
  • Windows GUI にて、空白文字の描画を行わないことで描画速度を改善しているようです。
  • 内部で使ってる vim_strchr 関数を最適化してる模様。 ← よく読んでない
  • 日本語のメッセージや tutor の間違いを修正してある。
  • browsefilter にマルチバイト文字が含まれていると化けるバグの修正。
  • ビルド時のオブジェクトファイルの出力先を調整してある。
  • libintl.dll より先に libintl2.dll を探すようになっている。
    • libintl2.dll が何なのかは私は分かってない。GETTEXT_DLL_WITHENC となっているから、多分 GETTEXT すると同時にエンコードを変換するものだと予想。
    • でも、KaoriYa 版に含まれているファイルって intl2.dll なんだよね…これでは読みこまれないんじゃ?
  • UimFep が使えるようになる。
    • コンソール上で日本語入力を行うためのフロントエンドプロセッサ、らしいのですが、使ったことないのでよく知りません。
  • レジストリの HKEY_LOCAL_MACHINE\Software\Vim\Gvim\runtime を見てなにかやっているようなんだけど、実際に何に使っているのかはわかりませんでした。
    • libintl.dll と vim.mo を探すためのパスらしいので、多分日本語関係の何か。

plugin

patch ではないけど、plugin もいくつか追加されている。

autodate.vim

ファイルの先頭から50行以内に "Last Change: ." などと書いておくと保存時に "Last Change: 11-May-2002." のように自動で保存時刻に更新してくれる。

cmdex.vim

雑多なコマンドの追加。

  • :MenuLang {language} (language: none/ja/zh...etc.)
  • :Scratch
  • :IminsertOff
  • :IminsertOn
  • :VDsplit {filename}
  • :Tutorial
  • :Nohlsearch
  • :Transform
  • c_CTRL-X
  • :Undiff
format.vim

gq でのフォーマットでの日本語の取扱いを改善する。句読点の行頭禁止処理とかいろいろ。

hz_ja.vim

半角全角変換。

scrnmode.vim

ウィンドウを横に伸ばしたりフルスクリーンにしたり戻したりする。

verifyenc.vim

ファイルを開いた際に設定される 'fileencoding' が正しいかどうか検証する。




結構あるねー。これは逆に言うと、普段何気なく使ってる機能であったとしてもここに載っているのは普通のVimにはない機能なので注意。
そう言えば昔if_spidermonkeyも含まれていたと思ったんだけど、今はどうなっているんだろう。ここで配布されているのは知ってるけど、patchが古くなってしまったのかな?