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を使うのが気に入らない。修正する必要があるな。

githubにdotfilesリポジトリを作った

いまさらだけど、やってなかったので。~/.dotfilesにcloneした。

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

思いついたらここに書く