jprekz.xyz - rekz's website

Windows上でVimやUnixコマンドが使えるコンパクトな環境の構築

2016/12/17

この記事は 苫小牧高専 Advent Calendar 2016 の17日目の記事です。

はじめに

ネットワークスペシャリスト試験落ちました。rekzです。

この記事は苫小牧高専ACの記事ですが,テーマは自由ということなので,今回は制限されたWindows環境でVimとかをいい感じに動かす方法について書きたいと思います。

今更Vimネタかよっていうツッコミは無しで……

TeraPadを使うことを強いられているんだ

(TeraPadは話の大筋とは関係ないです)

苫小牧高専にあるクライアントマシンは,そのほとんど(全て?)がWindowsマシンです。情報工学科の中にあるPCや全学生が使えるPCなど色々ありますが,どれもWindowsの,それも移動プロファイル環境になっています。普通ですね。

ここで問題になるのが,エディタ環境です。クライアントにはエディタはTeraPadしかインストールされておらず,Cygwinも使えますがエディタはemacsの古いバージョンしかありません。Unix系サーバー(LinuxとかBSDとか…)にログインすればVimが使えますが,いちいちvimrcを持っていくのも面倒ですし,そもそもクライアント内にあるファイルの編集はどうしたらいいんだという問題があります。

というわけで,管理者権限のないWindows環境で,移動プロファイルを考慮したコンパクトな構成でVimを動かす環境を考えました。

(容量を気にしないならMSYS2使うのが一番いいと思います)

WindowsでVim

要するにKaoriYa版Vimを使えという話なんですが……

vimrcファイルは基本的に環境変数HOMEで指定されたディレクトリに置きます。しかし,Windows環境だと環境変数HOMEの値は割とまちまちです。特にCygwin環境だと謎な場所が指定されていることがよくある気がします。

というわけで,Vimのバイナリと設定ファイルを近いところに置くコンパクトな構成を考えよう,というのが今回のアイデアです。 (追記)ぶっちゃけVimと同じディレクトリにvimrcを置けば解決なんですが,次に紹介するBusyBoxとか拡張性とかを考えて,小さなUnix互換環境のようなものを作ってみよう,というのが今回のアイデアということにします。


何はともあれ,新しくディレクトリを作ります。とりあえずディレクトリ名はTomoriNaoにしました。このディレクトリを仮想的なホームディレクトリにします。

この中にKaoriYa版Vimのバイナリを突っ込みます。ダウンロードは以下から。

Vim — KaoriYa

さらに,シェル起動用のバッチファイル(start.cmd)を作ります。必要に応じてVimの設定ファイルも。こんな感じ。

start.cmdの内容:

set HOME=%CD%
set PATH=%PATH%;%HOME%\vim80-kaoriya-win32
cmd

start.cmdがやっていることは以下の通りです。

  1. ホームディレクトリをスクリプト実行時のカレントディレクトリ(start.cmdがある所)に設定する
  2. VimがあるディレクトリにPATHを通す
  3. コマンドプロンプトを実行

start.cmdを直接実行すると,いい感じに環境変数が設定されたコマンドプロンプトが起動します。ここでvimもしくはgvimを実行すると,ちゃんと.vimrcや.gvimrcの設定が適用されることが確認できるはずです。やったね。

注意点としては,start.cmdは必ず直接実行する必要があります。他のプログラムやシェルから実行すると,カレントディレクトリが変わっておかしなことになる恐れがあります。

WindowsでUnixコマンド

これでひとまずVimを動かすという目標は達成できましたが,どうせならもっといい感じの環境にしたいですよね。

特に,このままではコマンドプロンプトを使うことを強いられていて精神衛生上よろしくないです(Vimですべての操作を行うなら関係ないですが……)。せめてUnix風のコマンドを使わせて欲しい感じです。lsコマンドを使いたいだけなら,ls.cmdなるファイルを用意(中身は dir %1)するという方法もありますが,ここではbusybox-w32というソフトウェアを使ってUnixコマンドを使う方法を紹介します。

BusyBoxは,主要なUnixコマンドを一つのバイナリに詰め込んだ軽量なソフトウェアで,もともとは組み込みのLinuxなどで使われる事が多いようです。そのBusyBoxをWindowsで動作するようにしたものがbusybox-w32です。以下のリンクの下の方にあるbusybox.exeからダウンロードできます。超軽いです。

busybox-w32

このbusybox.exeもTomoriNaoディレクトリに置きます。ついでに実行ファイルをbinディレクトリにまとめてみました。

start.cmdの内容:

set HOME=%CD%
set PATH=%PATH%;%HOME%\bin\vim80-kaoriya-win32
set PATH=%PATH%;%HOME%\bin
busybox bash

Unixっぽい環境が使えるようになりました。

ただし,上記したstart.cmdでは busybox bash というようにあたかもbashを起動しているような感じになっていますが,その実体は実はbashではなくashという軽量なシェルっぽいです(詳しく調べてませんが)。ちゃんとしたbashを使いたい場合は諦めてMSYS2などの高機能なUnix風環境を使いましょう。今回は移動プロファイル環境を考慮して,ファイルサイズの小さいbusybox-w32を選びました。

さいごに

お約束ですが,この記事を参考にする場合は自己責任でお願いします。(ぶっちゃけ共有PCではあまり変なことしないほうがいいと思います)

次回の苫小牧高専 Advent Calendar 2016の記事は cueikusuta さん担当です。よろしくお願いします。


追記(2016/12/18 2:41)

ネタが無ぇ~~~~アッッ思いついた!って感じで勢いで書いてから気づいたけど,Vimの設定ファイルを読み込ませるだけならVimと同じディレクトリに_vimrcを置けば読み込むっぽいな?

まあ,自分で$HOMEを設定しておけば他のコマンドを追加したり設定ファイルを追加するときも都合がいいよねってことで,無理やり訂正しました ガハハ