わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

ckからcygtermに切り替える

この週末に関東へ出かけます.
そこでどれだけ使えるか分かりませんが,いま,ノートPCを手入れしています.
OSはWindows 7です.ほとんど,Vistaで使ってきたフリーソフトを入れて,うまくいっていますが,Cygwinで少し冒険をして,1.7のベータ版を入れた*1ところ,痛い目に遭いました.
ckが起動しません.ck.exeをダブルクリックしても,コマンドラインからckを実行しても,ウィンドウが出ません.
でもckは保守されなくなって久しいです.そろそろ別の,快適な端末ソフトに乗り換えないといけませんね…
いろいろ調べると,Tera TermでもCygwinが使えるとのことで,試しました.
先に,参考にしたものリスト:

Tera Termでzshを起動

Tera Termの最新版(バージョン4.63)をダウンロードして,インストールします.
起動させると,「Tera Term: 新しい接続」というポップアップが出ますが,キャンセルのボタンを押します.プロンプトの出ない,ターミナルのみとなりますが,メニューで「ファイル(F)>Cygwin接続(G)」を選ぶか,Alt-G(Emacs流に書くとM-g),端末が出てきます…
と言いたいところですが,いつまでたっても変わりません.
ターミナルの下に,横方向に細長いのが出ています.

ここで「127.0.0.1:20...」のところをクリックすると,シェルが表示されました.タブですかこれは*2
Cygwin端末については,pwdやdfなど,よく使うコマンドをいくつか実行して,問題なさそうです.
なのですが,シェルはbashです.すでにzshが手になじんでいるので,Cygwinからも使えるようにします.
Tera Termのメニューで「設定(S)>その他の設定(D)」を選ぶと,「Tera Term: その他の設定」という画面が出ます.Cygwinのタブに合わせてから,

以下の修正をします.

  • SHELLを「/bin/zsh」に書き換え
  • ENV_2に「ZDOTDIR=(自分のホームディレクトリ)/.zsh」を追加
  • TERMの中の「SJIS」を「UTF-8」に変更(2箇所)

ENV_1,ENV_2は,Tera TermのCygwin接続に限り適用される環境変数なのでしょう.SHELLにせよENV_2にせよ,Cygwinでアクセスできるディレクトリ名を書きます.
ZDOTDIRは,.zshrcや.zsh_historyなどを格納しているディレクトリです.

シェルとして使いやすく

これで改めてメニューからCygwin接続…うまくいきました.
Windowの切り替えは,メニューの「ウィンドウ(W)」ですか.Altを押しながらWで,選べました.
ああちゃうちゃう.シェルの操作で,M-wに相当する操作ができないという意味ですよ,これ.M-wはふだん使わないけど,Meta何とかで,zshキーバインドを送れないのは,まずいです.
これも簡単に答えが見つかりました.「設定(S)>キーボード(K)」で,「Metaキー」の左にチェックを入れてOKするだけです.動作確認には,zshプロンプトでM-xを打つのが簡単でしょう.「execute:」と出たら,Metaのシェルへの送信が成功(有効),そう言うのが出ずに警告音が鳴ったら失敗(無効)です.
成功すると,M-wでウィンドウのサブメニューが出なくなります.ですが,Altを押して,離してから,Wキーを押すことで,従来のAlt-Wと同じ効果になります.このあたりは,Windowsアプリケーションならではですね.
これでTera Termを終了すると,設定が一切保存されませんので,「設定(S)>設定の保存(S)」を選びます.
それから,毎回毎回「空っぽの端末」を出す必要はありません.いい方法がないかいな…単純でした.Tera Termをインストールしたディレクトリに,cygterm.exeがあり,これをダブルクリックすれば,Cygwinと接続してくれます.このファイルを,ランチャに登録しました*3

cygtermとckの比較

VistaUTF-8でないCygwinを入れているマシンにも,同様にインストールしました.ただしTERMの中の「SJIS」はそのままにしています.
別途,ckを起動しても,問題ありませんでした.それぞれでpsを実行すると,両者のプロセスを知ることができました.
ckのメリットとして,複数の端末を一つのウィンドウで持つことができ,Ctrl-Tabで切り替えられることが挙げられます.それと,出力文字コードが混在できるのも,ありがたいです.SJISCygwin端末からUTF-8Linuxマシンにログインして,日本語を含む何かの出力を比較するときに便利です.
cygtermのメリットは…とりあえずは日本語入力でしょうか.「echo '和歌山'」を実行させてみると,コマンドライン上では文字化けしますが,出力は「和歌山」となりました.標準入力から送る際には,エコーバックで問題なく表示されます.
とはいえckは今後最新版が出そうにありません.文字コードの混在も,CygwinまでUTF-8化すれば,気にすることがほぼなくなります.
そんなこんなで当面はどちらも使い,Cygwinの1.7が主流になったときには,cygterm一本でがりがりやっていきたいと思うようになりました.

*1:インストールそのものは,従来のものと同じです.すなわち,setup-1.7.exeをダブルクリックして,途中でDownload Without Installingを選択.「All」の右の「Default」を1回クリックして「Install」に変わるまで待ち,ダウンロード.もう一度exeファイルをダブルクリックして,Install from Local Directoryを選択し,パッケージ選択を慎重に行い,インストールしました.

*2:右クリックして「Collector exit (X)」を選べばこのタブ表示が終了し,「何もないターミナル」と「Cygwinターミナル」が別々のウィンドウとなります.再度,タブ化したければ,インストールしたteratermフォルダの中にCollectorというフォルダがあり,その中のCollector.exeをダブルクリックします.

*3:Linuxマシンなどへのリモートログインには,これまでどおりPuTTYを使う予定です.