zsh でキョンと長門のチャットを
なんとなく暑さで頭がやられたのか作りたくなった.
全く分からない, zsh のシェルスクリプトで.
まあ, replore的日記 -どうやら気が触れたらしい.. を見て作りたくなったんだけどw
かなーり汚いソースになっちゃったけど, まあいいや, ブログにのっけてみる.
問題がいっぱいw
これを, .zshrc に書いてやる.
すると, 次から, zsh を起動する度に,
キョンと長門のチャット, あの最終回のやつがはじまる.
その後は, M-x nagato で見ることができる.
当然だけど, 自分は, zsh のスクリプトをよく知らないので, バグが多々あると思う.
気に入らない動作もあるし・・・.
これを試してみようという人は, そこらへん,
何かまずいことがあるかもという了解の元試してみてください.
############################################################ ## .zshrc に直接記述して, M-x nagato で起動 ############################################################ zle -N nagato function nagato { emulate -L zsh if ! zle ; then print -u2 "Use M-x nagato RET to watch nagato and kyon's chat." return 1 fi clear nagato-main } function nagato-main { # 長門有希のセリフ local nagato1="YUKI.N>見えてる?" local nagato2_1="YUKI.N>そっちの空間とは" local nagato2_2="まだ完全には連結を絶たれていない。" local nagato2_3="でも時間の問題。" local nagato2_4="そうなれば最後。" local nagato3_1="どうにもならない。" local nagato3_2="情報統合思念体は失望している。" local nagato3_3="これで進化の可能性は失われた。" local nagato4_1="涼宮ハルヒは" local nagato4_2="何もない所から" local nagato4_3="情報を生み出す力を" local nagato4_4="持っていた。" local nagato4_5="それは情報統合思念体にも" local nagato4_6="ない力。" local nagato4_7="この情報創造能力を解析すれば" local nagato4_8="自律進化への糸口が" local nagato4_9="つかめるかもしれないと考えた。" local nagato5_1="YUKI.N>あなたに賭ける。" local nagato6_1="もう一度こちら回帰することを" local nagato6_2="我々は望んでいる。" local nagato6_3="涼宮ハルヒは重要な観察対象。" local nagato6_4="わたしという個体も" local nagato6_5="あなたには戻ってきて欲しいと感じている。" local nagato7_1="YUKI.N>また図書館に" local nagato8_1="YUKI.N> sleeping beauty" # YUKI.N> が頭につかないものの頭に必要な空白 local nagato_sp=" " # キョンのセリフ # nagato1 が終了後 local kyon1="ああ" # nagato2_4 が終了後 local kyon2="どうすりゃいい?" # nagato5_1 が終了後 local kyon3="何をだよ" nagato_print () { local message=$1 # set waiting time if [[ $message[0] == "Y" ]] then local time=0.1 else local time=0.03 printf $nagato_sp fi for (( count=1; count<=$#message; count+=1 )) do # print message printf $message[$count] sleep $time # After “>” is, Japanese. exception exist. if [[ $message[$count] == ">" ]] then if [[ $message[$count+1] != " " ]] then local time=0.03 fi fi done # linefeed echo '' } kyon_print () { local message=$1 local time=0.03 for (( count=1; count<=$#message; count+=1 )) do # print message printf $message[$count] sleep $time done # linefeed echo '' } # 実際に実行. 力技. もっと上手くできたろうに・・・. # 画面を綺麗に. clear nagato_print $nagato1 kyon_print $kyon1 nagato_print $nagato2_1 nagato_print $nagato2_2 nagato_print $nagato2_3 nagato_print $nagato2_4 clear sleep 0.5 kyon_print $kyon2 clear sleep 0.5 nagato_print $nagato3_1 nagato_print $nagato3_2 nagato_print $nagato3_3 clear nagato_print $nagato4_1 nagato_print $nagato4_2 nagato_print $nagato4_3 nagato_print $nagato4_4 nagato_print $nagato4_5 nagato_print $nagato4_6 nagato_print $nagato4_7 nagato_print $nagato4_8 nagato_print $nagato4_9 clear sleep 0.5 nagato_print $nagato5_1 clear sleep 0.5 kyon_print $kyon3 clear sleep 0.5 nagato_print $nagato6_1 nagato_print $nagato6_2 nagato_print $nagato6_3 nagato_print $nagato6_4 nagato_print $nagato6_5 clear sleep 0.5 nagato_print $nagato7_1 clear sleep 1.5 nagato_print $nagato8_1 } nagato-main
ソース汚ねえ.
もっとスマートにまとめられるはず.
でも, 面倒になって放置. 駄目だねえ.
# zsh の記述法を調べるのにいいかげん飽きてきちゃったんだ・・・. 情報でないし, 英語ばっかだし.
やりたいこととか.
- M-x nagato で起動するとキー入力をシャットアウトしてる.
それで, それを zsh 起動時に表示する場合でもしたいんだけど, どうにもできない. - M-x nagato で起動したとき, キー入力シャットアウトが C-c だけ, どうもできない.
tetris はできてるのに.
本当は, M-x nagato すると, シェルが終了するようにしたかったけど, それがどうにも・・・上手くいかなくてやめた.
まあ, しょうがない.
普通に exit したら大変なことになったしw
# プロンプトがループしたw
更新時刻
2007年, 8月6日, 3:47