zshに入門する日記
2012-04-23
とりあえずMacのTerminal.appの環境設定で、起動時に開くシェルを/bin/zshにした。chshしてもダメだったので。
新しいタブを開いたりした時にちゃんとzshになるようになった。しかし、Lionから入ったと思われる「新しいタブを開く時には同じディレクトリで開く」が機能していない。
http://superuser.com/questions/232835/zsh-open-a-new-tab-in-the-same-directory
Use Oh-My-Zsh and add the 'osx' plugin in your ~/.zshrc like: plugins=(git osx) That's all you need to do!
Oh!
oh-my-zsh 導入した
カレントディレクトリが持ち越せるようになった。
でもデフォルトの配色が気に入らないのでテーマはとりあえずsimpleにしたが、それでもプロンプトに非ASCIIを使うのが気に入らない。修正する必要があるな。
minimalをもっとminimalに
themeのなかにあったminimalから僕が余計だと思う機能をそぎ落としてだいぶシンプルになった。さすがにワークツリーがdirtyであることの表示とかブランチの表示は残しておいたけど、それがカラフルである必要は感じない。
たぶん状況によってはもっと色々情報を出したい時とかあると思うけど、そういうのはそういう時に明示的にやる。デフォルトでいっぱい出されると疲れてしまう。
タイトルを変更させない
cdの時に勝手にタイトルを変えるのをやめさせる。タイトルは自分で設定したいのだ。
DISABLE_AUTO_TITLE="true"
明示的にタイトルを変える方法を用意する
lib/termsupport.zshを読む。
function title { [ "$DISABLE_AUTO_TITLE" != "true" ] || return if [[ "$TERM" == screen* ]]; then print -Pn "\ek$1:q\e\\" #set screen hardstatus, usually truncated at 20 chars elif [[ "$TERM" == xterm* ]] || [[ $TERM == rxvt* ]] || [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then print -Pn "\e]2;$2:q\a" #set window name print -Pn "\e]1;$1:q\a" #set icon (=tab) name (will override window name on broken terminal) fi }
そういうDISABLEの仕方をするのはどうか…。呼び出し側でDISABLEするべきだろ…。
いいや、自分で定義しとこう。
https://github.com/nishio/dotfiles/commit/cdc7fbc3efd14a3058465cbd102be6d6af7d942a
2012-04-24
setopt auto_cd setopt auto_pushd autoload predict-on predict-on
predict-onしたらいままで「CUIとはこういうものだ」と思い込んでいた既成概念がガラガラと崩れ落ちた。
2012-04-26
predict-onは成功している時はとても快適だが
- lsって打ってEnter押した時にls foobarがpredictされててlsに失敗する
- less ../fooをしたかったのにless ..まで打った時点でピリオドを含むカレントディレクトリのファイルbar.bazがpredictされて、その後/を入力した時点で../に戻ればいいのにba/になりやがる
- そしてbaだけ消して..に変えようかと思ったら全部消える
- echo "joo"としたくてecho "jまで入力した時点でecho "deps.js"をpredictして、そのままooを入力したらjoに戻ればいいのにdooになる。
失敗時のリカバリーをもうちょっとまじめに実装しろよ…
とりあえずzshのpredict-onを改善するのに時間を使いたくはないので単純にoffにすることにした。
TODO
思いついたらここに書く