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

この記事は 苫小牧高専 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の内容:

1
2
3
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の内容:

1
2
3
4
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を設定しておけば他のコマンドを追加したり設定ファイルを追加するときも都合がいいよねってことで,無理やり訂正しました ガハハ

p(´・_・`)q

この記事は ぱくとま Advent Calendar 2016 の7日目の記事です。

前回は potato4d さんの ぱくとまとクソの関係性について です。


始めになんですが,このブログの更新がもう10ヶ月近く途絶えた感じになってしまっていてとてもつらいです。

ぱくとまのブログ ですら毎月更新していることを考えると断腸の思いです。なんてこった。

プロコン

僕とぱくとまは今年・昨年・一昨年と3年連続で高専プログラミングコンテストに出場してきたので,その話をします。

一昨年

僕とぱくとまとホモメイドで初参加した年です。会場は一関でした。
このときのぱくとまは,画像処理とかでそれなりに貢献してました。
その後蒸し焼きにされました。

去年

この年も不穏な3人組でした。会場は長野でした。
ぱくとまは仕事したようなしてないような微妙な感じでした。多少は仕事してたような気がします。
ただしホテルのスリッパを履いたまま会場に来たのでダメです。

今年

僕とぱくとまで参加しました。地獄か。会場は伊勢でした。
ぱくとまは仕事しませんでした。

ぱくとま in 伊勢神宮


何書けばいいんだこれ?

とりあえず,僕が今までに加工したぱくとま画像をまとめて置いておくことにします。

明日は mktakuya さんです。強そう。

それでは。

新生jprekz.xyz

めっちゃ久々の更新,つらい

…|^・ω・)/  … … …

このブログを構築するCMSをMovable TypeからHexoに移行した。HexoはCMSというより静的サイトジェネレータだけど。
ついでにサーバーもロリポップからGitHub Pagesに移行。これでデータをgitで管理できるうえに静的サイトなのでセキュリティ的にもよろしい。安心感が違うぜ

ブログのデザインは,去年の今頃作ったこのデザインが割と気に入っているのでそのまま続投した。といっても,Movable TypeのテーマとHexoのテーマに互換性はあるはずがないので,自分でゴリゴリと書き直した。元々のテーマが自作なので,ササッと書き直せるかなーと思ってたけど,結局のところ作業に丸三日掛かった。誰だこんなコードを書いた奴は(´・_・`)

移行に当たってのトラブルを最小限にするため,個別記事のパーマリンク(URL)を変えないようにしたりはしたけど,めんどくさいところは色々妥協した。CSSにベンダープレフィックスを付けるのも止めたので,さらに閲覧できるブラウザが減った。対応は苦情が来たら考える()


高専特有の長い春休みに入ったはいいものの,やりたいことがあまり進んでいない気がする。何か作ったものといえばひなまつりリミックスくらいか(´・_・`)

そういえば,去年の末に一曲作ってたんでそれ貼っておきます リミックスだけど

あと,基本情報技術者試験に受かったりBMSの発狂初段に受かったりしてたけど,ブログの更新をサボっていたので書いてなかった。つらいね

BMS段位 通常十段

やったぜ。

またしても1年以上かかったけどな!


ここ数週間のうちにプロコンとか高専祭とか基本情報技術者試験とか色々あったけど, このブログは全然更新してなかったので, 後で少しくらいは何か書き残しておきたい。

後で(フラグ)

めうになりそう(n回目)

夏休み中の進捗報告!デデン

曲作った:

製作期間2日間, 総トラック数14トラック。REAPER5のスキンが気に入ったから作った(?)

夏休み中の進捗報告, 以上!デデドン

夏休み中にプロコンのコード書いたり学校のアレコレでコード書いたりしないとアレなんだけど, 一向に手がつかない。めうになりそう(´・_・`)

サイトいじった

このブログのアドレスとサイト名を変更しました。その名もjprekz.xyz やったぜ独自ドメイン
ブクマとかしてる人は更新をお願いします......といっても今までのアドレスもまだ生きてるんだけれども。

今まではロリポップサーバーのドメインを使っていたんだけど, なんかダサいし, もしサーバー移転することになった時にはアドレスが変わることになるし, あとxyzドメインが期間限定で安かったので(重要), さっさと独自ドメインを取ってそれに変更した。ついでにサイト名も変更した。完璧。

あと, サイト名の rekz's website の部分

どっちでもいいんだよね......? (あとから不安になるパターン)

あ, どうでもいいけどムームードメインではウェブマネーカードが使えることを確認したので, ドメイン取りたい人はご参考までに(?)
地味に使えないところ多いんだよね, wmカード

ひと目で、尋常でないCSSだと見抜いたよ

サイトちょっと新しくしました(´・_・`)

ってことで, この前の記事で言っていたようにHTML5 + CSS3ベースになった。bootstrapはなんか気に食わなくなってきたので排除, 自分でCSSを書いた。流石に生のCSSをバリバリ書くのはつらみがあったので, CSSプリプロセッサとしてLessを採用してみた。

Movable Typeのテンプレートもそれに合わせてHTML5仕様で書き直し, できるだけシンプルになるようにしてみた。idやclassの記述も最低限にしたつもり。あんまりシンプルにしすぎてもあれだけど, bootstrapみたいにいちいちclassつけるのもHTMLが汚くなる感じがして嫌だなあ(´・_・`)

CSSを書くにあたって, CSS3の便利そうな新機能は躊躇せず使いまくった。特にFlexible boxはほんとつよいと思う。コレがなかったら脱cssフレームワークしようと思ってなかっただろう......

こういう新機能使うと対応ブラウザとかベンダープレフィックスとかが絡んでくるんだけど, 今回はChromeとFirefoxの最新バージョン, あと一応IE11ぐらいしか対応する気はなかったので好き放題にやった。念のため, 最終的に吐き出されるCSSには自動でベンダープレフィックスをつけてくれるツールを適用してあるけど, さっきAndroid4.1内臓ブラウザで見たら見事にぶっ壊れてた。あとOpera miniとかIE9以下とかひどいことになってると思う。個人ブログなんでそのへんを深く考える気はない。

あと, WebフォントとしてWebKoruriを採用してみた。このKoruriというフォント, Windowsでもアンチエイリアスが掛かるようになったと聞いて, あともともとちょっと気になっていたフォントでもあったのでササッと使ってみた。とても良い。どうしてもwebフォントを使うとページのロード時間が長くなったりするけど, そのへんは全く考えていない。良いものは良いのだ

This is an article.

だいぶ長い間ブログ放置してた、、、3ヶ月以上?わお 年越してるし つらいね、、

最近、このサイトをリニューアルしようかと企んでいる。このブログはMovable Typeで動いているんだけど、いままではテンプレートを編集するたびに実環境(ここ)で更新して確認するっていう頭の悪いことをしてたので、これからは仮想マシンを使ってローカルでサーバーを立てて確認するようにした。今はそっちの環境で色々いじくっている。

で、その環境を手っ取り早く構築するためにVagrantを使い始めてみたんだけど、なかなかよい。一度設定すればshellでおもむろにvagrant upと撃ちこむだけで仮想マシンが立ち上がるし、ホスト側のあるディレクトリとゲスト側のあるディレクトリを同期できたりするし、そのうえさらに高度な機能も備えているらしい。僕のように基本的な機能だけ使うにしても便利になると思う。問題は日本語のドキュメントが少ないというところか。公式サイトのドキュメントを読むのが一番確実。

このサイトをリニューアルするついでにHTML5仕様にしようかと考えているんだけど、ページのアウトラインをある程度厳密に考えながら書かないといけないし、そもそもMovable Typeのテンプレートがゴチャゴチャしててどこから手を付ければいいのか分からなくなってきた。がんばるめう


そういえば曲作りました。投稿日2014/12/30 今更だ、、、

第25回プログラミングコンテストに参加した

平成26年10月18~19日の間、岩手県一関市で行われた全国高等専門学校プログラミングコンテストに行ってきた。

今日の午後6時頃に岩手県から帰ってきた。とてもねむいぞつかれたぞ

以下、適当にまとめ。

今回参加したのはプロコンの競技部門で、僕と@pakutoma@HOMOMAIDの不穏な三人組で出場した(´・_・`) 結果は準決勝敗退(1回戦は勝ち抜けたゾ)、言語はC#、ソースコードはGitHubに上がっている(あとでREADMEをまともにしておこう......)。

競技内容は割愛するとして、コーディングの役割分担は問題画像解析を@pakutoma、経路探索を僕、その他を@HOMOMAIDがだいたい担当した。僕は自分の担当部分以外のことはよくわからないが、僕が担当した経路探索では単純にA*アルゴリズムを適用しただけの実装と、並列処理とA*っぽいアルゴリズムを組み合わせてがんばった実装とを用意した。でも単純なA*のほうは探索量的にやっぱり無理があったから本番では使わなかったな つらいね......。

まあ、大会に参加して周りから刺激を受けることができただけでも良かったと思う。とりあえず今はC++に興味が湧いている。あとは様々なアルゴリズムを組み合わせる発想が自分には足りなかったかな。やっぱり実際にコードを書かないとなかなかコーディング能力つかないね(・_・)
で、なんだかんだですごい疲れた。今日帰ってきたばかりだからもう眠いゾ

岩手には3泊4日したわけだけど、詳細は、まあ、いまはもう寝たいんで後にします。多分

いや結局書かないと思う。多分。


以下、飯テロとか色々。

改めて撮った写真を確認したらなんかカフェの写真しかねえ(´・_・`)

プロコン関係ないんだよなぁ......

みんな大好きホモメイド

"ご注文はホモメイドですか?"ってチーム名にしようとしたら運営にハネられたのは内緒

BMS段位 通常九段

ついに九段受かったった......長い戦いだった......一年以上掛かったぞ......

四曲目の中盤でBADはまりして、死が見えたけど勝った。完全勝利