端末内リモートプログラミング環境の構築メモ

Emacsの中で暮らすことはあっても、端末の中で暮らすことはなかったGUI世代のわたしです。

Linux を使うようになり端末を使う比率は増えましたが、あくまで コマンドの打てる 便利なGUIアプリという認識です。

わたしにとってコンピュータを使う時間のほとんどであるエディタも、もちろんGUIエディタ。Emacs 好きを公言していますが、初めてつかった Emacs は21ですので、わたしにとっての EmacsGUI エディタですね。

そんなへたれなので、Linux サーバー上て作業するときも、VNC や X Client を使ったりのリモートなGUI環境ばかり。(余談ですが、初めてリモートでX を使ったときは、本気で感動しましたり。Xすごいよ。さすがターンA のお兄さん)

ところが最近、業務の都合で あちこちの端末・サーバーを行ったり来たりするようになり、単にSSHで入るだけのほうが楽ちんだなぁ、と思う機会が増えてきました。でも、コンソールはともかくエディタがねー、とか思ってたのですが、ある日、ふと 「そういえば Emacs ってCUIエディタとしても動くじゃん。ちゃんと設定とか整備すればコンソールの中だけで完結するかも」とても当たり前のことに気がつきました。

・・・いや、心底GUIの申し子ですね。気付くの遅すぎ..orz

そんなこんなで、環境を整えてみましたり、なメモ。

端末エミュレータ

いままでは Windows 上で VirtualBox 上の UbuntuGnome Terminal とかを使っていましたが、コンソールの中でだけで過ごすのならば、クライアントサイドLinux いらなくね?ということおで、Windows の端末の中からよさげなものをチョイスです。

いろいろ試した結果 MSYS 上の mintty に落ち着きました。これはステキな端末ですね。

MSYS自体はインストーラでサクッと入るので割愛。mintty のインストールはMSYS上で

$ mingw-get update
$ mingw-get install mintty

とするだけです。

mitty のカスタマイズは メニューの[Option]からも けっこう設定できるのですが、ANSIカラーも変更したかったので、~/.minttyrc を編集。

Locale=ja_JP
Charset=eucJP
Font=VL ゴシック
FontHeight=10
Transparency=medium
BackgroundColour=0,0,64

Black=44,44,44
Red=192,137,137
Green=96,180,138
Yellow=223,175,143
Blue=154,184,215
Magenta=220,140,195
Cyan=140,208,211
White=220,220,220
BoldBlack=112,144,128
BoldRed=220,163,163
BoldGreen=114,213,163
BoldYellow=240,223,175
BoldBlue=148,191,243
BoldMagenta=236,147,211
BoldCyan=147,224,227
BoldWhite=255,255,255

背景色を濃紺にして、ANSIカラーは xubuntu の ダークパステルテーマから拝借。あとは、接続先サーバーが EUC なのでその周りの設定です。

半透明は、見にくくなるし、マシンパワーも無駄に奪うので良いことなしなのですが、なんかやっちゃいますよね。

Emacs 23

サーバーにも最初っから Emacs はインストールしてあったのですが、入っているのは Emacs 21。古い。もう Emacs 23 より前に戻れない体なので、自分環境を構築です。root を持ってないので $HOME/local に tarball からインストール。

$ tar xvzf emacs23.4.tar.gz
$ cd emacs23.4
$ ./configure --prefix $HOME/local --without-xim
$ make
$ make install

そして、お気にの .emacs を home に 持ってきて終了(Meadow の設定とか入ってる秘伝のタレのような.emacs だけれども、もう init.el 化しとかないとなー)

tmux

接続が切れてもサーバー側の作業が途切れないようにしたいので、screen もしくは tmux を使いたいお年ごろ。サーバーにはどちらも入ってないので、例によって tarball で $HOME/local に tmuxをインストールしました。

ちなみに screen じゃなくて tmux を選んだのは、

tmuxの操作方法はscreenによく似ていますが,screenのコピーモードがviをベースとしたキーバインドになっているのに対し,tmuxではEmacsベースのキーバインドになっている点が異なります。設定の変更でviベースのキーバインドにすることもできますが,デフォルトはEmacsベースです(注5)。

注5
大事なことなので二度言いました。

第127回 ターミナルマルチプレクサ tmuxを使ってみよう:Ubuntu Weekly Recipe|gihyo.jp … 技術評論社

です。

まずは依存するライブラリ libevent のインストール

$ wget https://github.com/downloads/libevent/libevent/libevent-2.0.21-stable.tar.gz
$ tar xvzf libevent-2.0.21-stable.tar.gz
$ cd libevent-2.0.21-stable
$ ./configure --prefix $HOME/local
$ make
$ make install

そして、tmux をビルド。

$ wget http://sourceforge.net/projects/tmux/files/tmux/tmux-1.8/tmux-1.8.tar.gz/download?use_mirror=jaist
$ tar xvzf tmux-1.8.tar.gz
$ cd tmux-1.8
$ ./configure --prefix $HOME/local CPPFLAGS="-I$HOME/local/include" LDFLAGS="-static -L$HOME/local/inlcude -L$HOME/local/lib"
$ make
$ make install

tmux の設定。あまり使いこなせてないので至ってシンプルです。

set-option -g prefix C-z
set-option -g default-terminal xterm-256color

デフォルトのプレフィックス C-b だと、Emacs でカーソル移動に不自由するので変更しました。tmux界隈でよく使われる代替プレフィックスは C-t らしいですが、これも Emacs の transpose-chars に不自由するので C-z にしました。C-z は suspend-emacs に割りあたってますが、tmux 環境下じゃ使わないでしょう。

default-terminal を xterm-256color にするのは、Emacs が 8bitカラーとかになっちゃうのの対処。本当は screen-256color にして、あとは Emacs 側をいろいろ頑張るのが王道みたいですけど、ヘッポコなのでお手軽な方向で。

OCaml

Python は 入っていたのですが、さすがに OCamlは入っていなかったので、ついでにこれも入れちゃいます。

http://caml.inria.fr/download.en.html から 最新のソースをダウンロードして

$ tar xzvf ocaml-4.00.1.tar.gz
$ cd ocaml-4.00.1
$ ./configure --prefix $HOME/local
$ make world.opt
$ make install

こんな感じで良いのかな?イマイチ自信がありませんが、ちょろっと動作確認

$ ~/local/bin/ocaml
        OCaml version 4.00.1

# let rec length x = match x with [] -> 0 | first :: rest -> 1 + count rest;;
val length : 'a list -> int = <fun>
# length [1;2;3;4;5;6;7;8] ;;
- : int = 8
# exit(0);;

してみたら、動いたのでよしとします。


* * *


こういうメモは、いままで GNU Smalltalk のインストールのような マイナーなものを除いて書かなかったのです。もっと詳しい人がいろいろ書いてくれているので ググれば それが見つかります。

ですが最近ネタもないですし、やっぱり 自分用であっても ブログにあった方が探しやすくていいかも、と思ったので試しに書いてみました。自分環境にメモしてると、時間が経つと発見できない、なんてことがあったりで...orz 退屈すぎてごめんなさい。

GNU Smalltalk といえば、3.2.90 がでていますね。もちろんインストールしたりしてるのですが、あまり遊べていません。

GNU Smalltalk は、なんか開発が止まることが多く、3.2.4 から 2年更新が止まっていて、「また富樫か」と思っていましたが、今年に入って 3.2.5, 3.2.90 と 矢次ばやにリリースされ、嬉しいです。特に今回は

I am happy to announce the first alpha release on the way to GNU Smalltalk 3.3.

とあり、リリースノートを見ると VM や Parser 周りをがりがり書き直しているようです。GTK+ との連携強化が目的っぽい。なんかいろいろ怪しかったからですからねー。

時間があればコードを追っかけたいと思うのですが、クラスブラウザから追える範囲の外ですと、どうもおっくうで(^^;