2013年12月15日日曜日

zsh: predict-on/predict-off に悩んで predict-toggle を定義して bindkey してみた


zsh の華やかな便利機能といえば predict-on ですが、だいたい調子よくてもたまにうざい事もあります。

predict-on / predict-off どちらが自分により良いか悩むのは zsh 使いにありがちな事と思います。

考えた結果、 predict-toggle コマンドを作成して insert キーに bindkey してみたら、これが今の私にはとても良く合って使い易いものでした。

以下が執筆現在(+修正後)の zsh の predict まわりの設定です。

autoload predict-on

alias predict-on="predict.on && export ZSH_PREDICT_STATE=0"
alias predict-off="predict.off && export ZSH_PREDICT_STATE=1"

predict.on

predict.toggle()
{
  if [ $ZSH_PREDICT_STATE -eq 0 ]
  then predict.off;
  else predict.on;
  fi;
}

zle -N predict.toggle

bindkey "^[[2~" predict.toggle

zstyle ':predict' verbose true

  1. autoload predict-on で zsh で predict-on / predict-off できるようにします。
  2. alias で predict.on / predict.off に伴い環境変数がセットされるようにします。
  3. とりあえずログイン時のデフォルトは predict.on にします。
  4. predict.toggle 関数を定義します。(2.)で on / off でセットされる環境変数によって off / on するだけの簡単な関数です。
  5. zle -N predict.toggle して使いやすくしておきます
  6. bindkey "^[[2~" predict.toggleINSERT キーで predict.toggle するようにします。
  7. zstyle ':predict' verbose true で predict-on / predict-off に伴い通知が表示されるようにします。
on/offを自動化しようかとも思いましたが、やはり手動スイッチは良いものです。快適になりました(*´ω`*)

(同日15時50分くらいに+修正した内容について)

公開当初は predict-on / predict-off を alias で直接コマンド上は上書きする様にしていました。しかし、そうすると、
predict-on:27: job table full or recursion limit exceeded
こんなエラーが発生する事態に気付き、alias は predict.on / predict.off と修正しました。ついで、統一性を持たせる意味でも predict-toggle も predict.toggle に修正しました。 

0 件のコメント:

コメントを投稿