Vimのインストールの前に

Vimをインストールする前に環境を整えておく。
と言ってもたいしたことをしている訳じゃないけど、基本はUSBメモリーで持ち歩けること。
職場ではインストールに制限かかってるし、家ではデバイス追加するたびにOS入れ直しをしたりして、毎回ソフトのインストールをするのがとても面倒。
というわけど、持ち運び可能なソフトばかりを選んで、OS入れ替えてもすぐに快適な環境を作れるようにした。

 そのための根幹となるのがランチャーであるCraftLaunch3。2のときは人気がすごかったけど、Pythonでの拡張が自由になると難しくなりすぎて利用者が減った模様。
だけど便利で手放せないから使いこなしているとは言えないけど、ずっと使ってる。これのいいところは環境変数を起動したソフトに引き継げること。
 バッチファイルを作成してそれを起動することで、システムに設定されている以外の環境変数をいくつか追加してから、CraftLaunchに渡してる。CraftLaunchから起動するとその環境変数を引き継いでくれるから非常にありがたい。

USBメモリーには以下のような構成にしている。
├bin
│├afx (ファイラーのafxw)
│├clnch (ランチャーのCraftLaunch)
│└vim   (Gvim

└home

このhomeの中にバッチファイルを作成してそれを実行することで、環境変数を引き継いだCraftLaunchを起動してる。

@echo off
::%~d0で実行ファイルの存在するドライブに移動
%~d0
::%~dp0で実行ファイルの存在するフォルダに移動
cd %~dp0

::環境変数の設定
set MYBIN=%~d0\bin
set HOME=%~dp0

::常駐アプリの起動
start %MYBIN%\clnch3\clnch.exe

最初の"%~d0"や"%~dp0"を使用することでバッチファイルが実行されるドライブ名やパス名を取得できるので、ソフトが多数入ったbinフォルダやhomeを設定することができている。
これを実行したらCraftLaunchが起動する。
CraftLaunchの設定ファイルにはこれらの環境変数からパスを取得して設定するようにしてる。
たとえば起動時に読み込むconfig.pyには次のように記載している。

import os
import sys
from clnch import *

# 設定処理
def configure(window):
    myBin = os.environ["MYBIN"]

# コマンドを登録する
    window.launcher.command_list += [
        #( None, u"exeの場所", u"パラメータ", u"作業フォルダ")
        (u"vim",    window.command_ShellExecute( None, myBin + u"/vim/gvim.exe", u"--remote-tab-silent %param%", u"" ) ),
        (u"afx", window.command_ShellExecute(None, myBin + u"/afx/afxw.exe", "", u"") ),
    ]

import os でOSモジュールを読み込んで環境変数を使えるようにしている。
os.environ["MYBIN"]でMYBINに設定されてるパスを取得して引数myBinに格納している。
コマンド登録ではmyBinを使い
myBin + u"/vim/gvim.exe"
とすることで、USBメモリ内のbinフォルダにある、vimフォルダのgvim.exeを起動するということになる。
もちろんこれらのフォルダを丸ごとSSDに放り込むことでSSDのhomeフォルダとならんだbinフォルダ内にあるvimから起動ということもできる。

これを使う利点はもう一つあって、環境変数を設定しまくったものとそうでないのと区別できる。
通常のコマンドプロンプトを立ち上げて環境変数HOMEを調べると

C:\Documents and Settings\homaju>echo %HOME%
%HOME%

環境変数HOMEが設定されていないという風になるけど、
これがCraftLaunchから起動したコマンドプロンプトだと

C:\Documents and Settings\Administrator>echo %HOME%
d:\home\

とバッチファイルを置いている場所に環境変数HOMEが設定されているのがわかる。

こうすることでDocument&Settingsを使うものとD:\homeを使うものと使い分けることができて混乱しなくてすむ。