Hatena::ブログ(Diary)

ミームの死骸を待ちながら このページをアンテナに追加 RSSフィード

We are built as gene machines and cultured as meme machines,
but we have the power to turn against our creators.
We, alone on earth,
can rebel against the tyranny of the selfish replicators.
- Richard Dawkins "Selfish Gene"

Add to Google Subscribe with livedoor Reader はてなRSSに追加

Jun 06(Sat), 2009

DBCLS後のHashthonでMac OS XのTerminal改造したりとか


たまたま金曜日ハチロク世代なDBCLS変態*1リサーチアシスタント達がそろった。朝からバイトして、お仕事的にはもう1.5時間あれば一段落ついたのに...という微妙な区切りで後ろ髪を引かれつつ上がり、秋葉原焼き鳥を食って、真澄おいしいです\(^O^)/となって、その後ゲーセンビーマニドラムマニア・ユービート太鼓の達人などの音ゲーに興じた。その後、id:mickey24, id:blanc_et_noir, id:syou6162, id:yag_ays、なぜか日付が変わってから合流したid:beatinaniwaの5人が僕の家に来て夜通しMacbook*2をいじり続けるHashthonをやった。田園都市線人身事故で遅れて家に着いたのが2時でもなぜか元気。ワークライフバランス(違

今回は、特にmickey24先生にいろいろと教えてもらったのでメモ。あと今回書かないけどgitを使えるようにした(まとめるかどうかは不明)。


SIBMLによるターミナル改造計画

id:mickey24の操作がいちいち神掛かっている*3ので、できる範囲で神の技を盗んだ。まずSIMBLというフレームワークプラグイン?をインストールするところから。その上にいろいろと便利なプラグインをのせることができる。

f:id:Hash:20090606185210p:image:h150

Terminalのパネルに、VisorとTerminalColoreopard (Color Preferences...)の設定項目が追加されています。


Visor

Visor by BlackTree

これはものすごくかっこいい。動いている場面を見せないと感動がわからないんだけど、あらかじめ指定したホットキーターミナルが画面上部から「しゅいん」とスライドしてくる。不要になったらまた「しゅいん」と上に戻す。なんかスーパーハカーになった気分!mickey24に倣って、Ctrl+Uをホットキーに設定してみた。



TerminalColoreopard

黒い背景にANSIカラーの青文字だと、とても見づらかったりします。他のANSIカラーもけばけばしくてちょっとよろしくありません。そこで、Terminal上のANSIカラーをいじれるTerminalColoreopardというSIMBLEプラグインを導入。こんなかんじになりました。

f:id:Hash:20090606173603p:image

うん、マイルドになった。もうすこし色を薄めにして今は使ってる感じ。



カッコ良く表示させるための.bashrc設定


プロンプトの色を変える。このへんを参考に。ポイントは、PS1という環境変数をいじるとこ。たとえばこんなのも。\eは\033と同じで、エスケープを示す。

f:id:Hash:20090606173559p:image

export PS1="\[\033[037;041m\]\e[04m[\t]YUKI.N(\!)>\e[00m \[\033[0m\]"

プロンプトの背景色も指定できるあたりがうれしい。今まで、たまに実行結果とプロンプトの色がまざってわかりにくかったので、これは重宝するなー。むしろ今までよくこの設定なしでやってきたものだ。


c.f.使えそうなPS1パラメータ抜粋。

\d "曜日 月 日"のフォーマットによる日付け

\H ホスト

\n 改行

\t 24時間制の HH:MM:SSフォーマットによる時間

\@ am/pm をつけた12時間制のフォーマットによる時間

\u 現ユーザーユーザー

\w 現在ディレクトリ

\W 現在ディレクトリベース

\! 現在コマンドヒストリー番号*4

\# 現在コマンドコマンド番号*5


ヒストリーの保存MAX値はHISTFILESIZEで指定する。500になってたのでとりあえず1000にしておいた。ちなみにalias hig='history | grep 'というエイリアスを設定してるんだけど便利です。



bashzshの右プロンプトを強引に再現

mickey24はターミナルの右端に情報時間とか)を表示(アイキャンディというらしい?)していたのだが、これはzshの機能でありbashで実現不可能らしい....とか思ってたら無理矢理再現できたww

f:id:Hash:20090606173604p:image

export PS1=" (長いスペースを入れる) \[\03 3[037;041m\]\e[04m[\t]\n \$ \e[00m \[\033[0m\]"

要するに、一行目は空白を入れまくって、右端に情報が表示されるように調節。そこで改行(\n)して、二行目にはプロンプトの端っこ($とか>とか)だけを表示。これで擬似的アイキャンディの完成ww 問題はスペースの数を適当に調節するあたりだけど、個人的にはディスプレイ幅に固定しているので問題ない。汎用性とか無視してるあたりどうなの。まあいいか。今の所こうしてる。

export PS1=" (長いスペースを入れる) \[\033[037;041m\](\!)[\t]\n\[\033[037;042m\] [\W]\u ->\e[00m \[\033[0m\]"



PROMPT_COMMAND

次に。PROMPT_COMMANDという環境変数存在を知る。こいつを指定してやると、bashコマンドが「プロンプト表示直前」に毎回実行される模様。何かコマンドを打ち込んで、反応して、そして自分に操作が戻ってくる直前に実行される模様。これも情報表示に使えそうだ。たとえば、プロンプトに現在ディレクトリを表示すると、しょっちゅうプロンプトの長さが変わって落ち着かない、とする。こんなときPROMPT_COMMAND="pwd"とか設定するといいかもしれない。他に使い道あるかな...。



次にやりたいことなど

*1:内部では褒め言葉

*2:+一部Thinkpad

*3:ように僕には見える

*4:$HISTFILESIZEのMAXまで蓄積されたhistory+今回打った数

*5:今回打った数

ka-nachtka-nacht 2009/06/06 19:29 > たとえば、プロンプトに現在のディレクトリを表示すると、しょっちゅうプロンプトの長さが変わって落ち着かない、とする。
2行にする案。 http://gyazo.com/528c7fde6d26ece14382a9e4d0db37cb.png

> vimで、複数ファイルsplit表示したときのセパレーター色を設定
status lineのことですね。
highlight StatusLine cterm=bold,reverse
highlight StatusLineNC cterm=reverse
とかなんとか。

> vimで、ビジュアルモードの選択色を指定する
highlight Visual cterm=reverse
highlight VisualNOS cterm=bold,underline
とかなんとか。

chap_pychap_py 2009/06/06 23:08 ってか、起動が重いのが気にならないのならzshに乗り換えた方がいい気がする。

多機能すぎてヤバい、他のシェル使えなくなるw

tencubetencube 2009/06/07 00:58 そこまでするのになぜzshを使わないの??

ところでそんなおもしろげなイベントがあったのなら行けばよかった。

sayamatchersayamatcher 2009/06/07 12:40 間違い見つけた。以下の設定、最後に"(ダブルクオート)忘れてなくない?
export PS1="\[\033[037;041m\]\e[04m[\t]YUKI.N(\!)>\e[00m \[\033[0m\]

HashHash 2009/06/07 14:17 >id:ka-nachtさん

さすが歩く:helpことVim神...!ありがとうございます!
statuslineをいじる楽しみを覚えました。
また、Visual選択時に色とりどりに反転してしまい、目にうるさかったのですが、ctermfg, ctermbgで解決です。
:so $VIMRUNTIME/syntax/colortest.vimを見ながら色を調整して、

set statusline=%F%r%m%h%w%=%l/%L(%3p%%)\ FileType:%y/Form:%fileformat-%fileencording
highlight StatusLine cterm=reverse,bold
highlight StatusLine ctermfg=green
highlight StatusLine ctermbg=white
highlight StatusLineNC cterm=reverse
" change statusline color in insert mode
autocmd InsertEnter * highlight StatusLine ctermfg=red
autocmd InsertLeave * highlight StatusLine ctermfg=green

highlight Visual ctermfg=darkblue
highlight Visual ctermbg=grey

こんなかんじに設定してみました。

HashHash 2009/06/07 14:21 >id:chap_py
いっぺん使ってみようと思う><

>id:tencube
zsh絶賛なので使ってみます><
ウチ来てくれたら手料理作るよ!

>id:sayamatcherさん
ありがとうございます。修正しました。

HashHash 2009/06/07 15:51 なんで僕はhighlight複数行に分けて書いてんだ。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証