winenv.vim 作った

momonga.vim #2.2 で作っていたアレです。
あのあとすぐ、細かいバグを取ったりして本体の実装は完了したのだけど、その後ドキュメントを書くところで面倒になって長らく放置…。
しかし本日、yuk(balloon-stat)さんが、unite-winpath なるものを作ったと言う報告をされて、これはやばいと思って重い腰を上げてさっきドキュメントを書き上げてリリースしました。やはり後回しにするもんじゃないですね…。

https://github.com/thinca/vim-winenv

何をするプラグインなの?

Windows を使っている人ならわかると思うんですが、Windows でグローバルな環境変数とかを設定するの、すごく面倒ですよね。Vim から編集できたら便利そうです。これはそのために便利するプラグインです。
勘のいい人は気付いたかもしれないですが、これはレジストリを操作する系のプラグインです。バグっていた場合非常に危険なアレです。使用は自己責任でお願いします!

簡単な使い方

:WinEnv コマンドを使うと、バッファが開きます。以下のような感じ。

:WinEnv
        {place} の一覧を開きます。Windows の環境変数にはシステム環境変数とか
        ユーザー環境変数とかがあって、それらのこと。<CR> するとそれぞれの環境変
        数の一覧が見れる。
        ちなみに VOLATILE と言うのがあるけど、これは現在のログインセッションの
        間のみ有効な環境変数らしい。私も今回これ作るまで知らなかった。こんなん
        あるのねー。

:WinEnv {place}/
        {place} にある環境変数の一覧が見れる。<CR> すると編集できる。

:WinEnv {name}
:WinEnv {place}/{name}
        環境変数を編集するバッファを開く。{place} を省略すると、
        g:winenv#default_place が使われる。これのデフォルトは SYSTEM。
        編集したら保存すると環境変数の変更が適用されます。

環境変数 PATH と PATHEXT は特別扱いされていて、; 区切りの各項目が1行ずつになって表示される。
他にもこういう特別扱いすると嬉しい環境変数があるかわからなかったので今のところ固定。要望があれば設定可能にするかもです。

中でやってること

このプラグインには bin/winenv.bat って言う bat ファイルが入っていて、これ単体でもコマンドラインから動くように作ってある。
で、最近の Windows では、SYSTEM の環境変数を操作するためには UAC がどうたらとかあって、権限を昇格させないと操作できない。
ここが非常にネックだったのだけど、この辺り資料や試行錯誤の結果、必要ならダイアログを出して権限を昇格させることに成功。やりました。
なので、SYSTEM の環境変数を変更する際には毎回 UAC のダイアログが出ます。まあでも通常の方法に比べれば全然ラク。

今後

  • unite インターフェースがあると便利そう
  • 環境変数名と一緒に値も同時に出る view があると便利そう

今後とか書いたけどやるかどうかは完全に未定。やる気が出るかと要望があるか次第です。