目次はこちら [2010-01-22-1].
zsh + screen の組合せが強力なことはあちこちで語り尽くされているので,前置きは抜きにして淡々と設定ファイルを晒しつつ,特記すべきもののみ言及することにする.
.zshrc [この記事の公開時の版] [最新版]
LS_COLORS の色が標準的でないのは,個人的な歴史事情によるものなのでスルーで.
cygwin 環境で ls に --show-control-chars をつけているのは,日本語ファイル名を表示するため.ただし端末を Shift JIS 設定にしておく必要がある.
左プロンプト (PROMPT) の設定がごちゃごちゃして見えるのは,エスケープシーケンスを出して色を変えているからで,表示内容自体はシンプルに「ホスト名 + %」としている.
右プロンプト (RPROMPT) にはカレントディレクトリを表示させている.ただし普通に RPROMPT='[%~]' とかすると日本語が化けてしまう.日本語のフォルダ名なんか使うのが悪いという指摘は至極もっともなのだが,大人には巻かれざるを得ない長い物がいっぱいあるのだ.で,どうするかというと,実は precmd() の中で自前で RPROMPT=$PWD などとセットしてやれば OK.
ここで欲を出して「やっぱり $HOME の部分は ~ って表示したいよね」とか思い始めるとちょっとややこしくなる.いや,普通に考えれば何もややこしくなくて,単に sed とかを通してやればよい.話をややこしくするのは「Cygwin の遅さ」である.プロンプトを表示する度に新規プロセスを起動すると,軽くイラッとする程度には反応が遅くなる.というわけで外部コマンドは呼ばず,zsh 内部の変数展開の小技を駆使するのがよい.
ついでなので,「ホスト名の先頭3文字:ディレクトリ名」をエスケープシーケンス付で出力しておく.これは screen の hardstatus 行で使われる.
「ん? その辺の文字列が更新されるのはカレントディレクトリが変わったときだけなんだから,precmd() じゃなく chpwd() の中でセットする方が効率いいんじゃね?」と注意深い読者は思われたかもしれないが,実は chpwd() ではうまくいかないケースがあるのだ.どううまくいかないかは宿題とします.
.screenrc [この記事の公開時の版] [最新版]
エスケープキーは Ctrl+T にしている.
hardstatus には,上に書いたように zsh の precmd() と組み合わせてホスト名とディレクトリ名を表示するようにしている.
window 分割のキーバインドは Emacs 風.
端末文字コードは,Ctrl+T e u で UTF-8 に変更.同様に,最後の u の代わりに e, s, j とするとそれぞれ EUC-JP,Shift JIS,ISO-2022-JP となる.
.zshrc.cygwin [この記事の公開時の版] [最新版]
Cygwin 環境のときにのみ,.zshrc の中から呼び出される.
まあだいたい見てもらった通りなのだけど,alias を設定しまくって,例えば excel と打てば MS Excel が,firefox と打てば Firefox が起動するようになっている.c:/WINDOWS とか c:/WINDOWS/system32 とかにも適宜 path を通しているので,notepad (メモ帳) とか mspaint (ペイント) とか control (コントロールパネル) とかも起動できる.zsh のコマンド履歴・コマンド補完の力がここに加わるお蔭で,強力なランチャソフトウェアとして使用できることになる.
最後に方にはやや変態的な alias が並んでいる.追い追い説明することにする.(追記: 一部書いた [2010-01-24-1])
基本的な使い方としては,CygTerm - Putty を立ち上げたらすぐに
% ssh-agent screen
して,その中で ssh-add する.他のマシンにログインするときは,適当な window 内で
% screen ssh hostname.example.com
とかして新しい window を開くようにする.入力が面倒そうに見えるかも知れないが,だいたい「scr」辺りまで打ってから Ctrl+P でコマンド履歴をたぐればよいだけなので全く問題ない.
他には,ホットキーで Cygwin のウィンドウにすぐ移れるようになってたりとか,ファイラで指定したフォルダを screen の window として開いたりとか [2010-01-31-1],Windows 環境ならではの小技はいろいろあるのだけど,まあその辺も追い追い語ることにする.
最終更新時間: 2010-01-31 11:42
* [asJepw5pzb7] <a href=http... (2016-04-11 11:37:07)
* [Paul] You\'re a real deep tihkner. Thanks for ... (2012-12-31 04:10:37)