端末内リモートプログラミング環境の構築メモ
Emacsの中で暮らすことはあっても、端末の中で暮らすことはなかったGUI世代のわたしです。
Linux を使うようになり端末を使う比率は増えましたが、あくまで コマンドの打てる 便利なGUIアプリという認識です。
わたしにとってコンピュータを使う時間のほとんどであるエディタも、もちろんGUIエディタ。Emacs 好きを公言していますが、初めてつかった Emacs は21ですので、わたしにとっての Emacs は GUI エディタですね。
そんなへたれなので、Linux サーバー上て作業するときも、VNC や X Client を使ったりのリモートなGUI環境ばかり。(余談ですが、初めてリモートでX を使ったときは、本気で感動しましたり。Xすごいよ。さすがターンA のお兄さん)
ところが最近、業務の都合で あちこちの端末・サーバーを行ったり来たりするようになり、単にSSHで入るだけのほうが楽ちんだなぁ、と思う機会が増えてきました。でも、コンソールはともかくエディタがねー、とか思ってたのですが、ある日、ふと 「そういえば Emacs ってCUIエディタとしても動くじゃん。ちゃんと設定とか整備すればコンソールの中だけで完結するかも」とても当たり前のことに気がつきました。
・・・いや、心底GUIの申し子ですね。気付くの遅すぎ..orz
そんなこんなで、環境を整えてみましたり、なメモ。
端末エミュレータ
いままでは Windows 上で VirtualBox 上の Ubuntu の Gnome 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+ との連携強化が目的っぽい。なんかいろいろ怪しかったからですからねー。
時間があればコードを追っかけたいと思うのですが、クラスブラウザから追える範囲の外ですと、どうもおっくうで(^^;