zshで補完を自動で表示してくれるauto-fu.zshの簡単な紹介と、指定文字以上から補完を始めるようにする変更の方法

auto-fu.zshzshで自動的に補完の候補を表示してくれるスクリプトzshには本来の機能でpredict-onがあり、こちらも似たようなことをしてくれるけど、いろいろ挙動が異なります。自分が使ってみたところ以下のような違いがあったように感じました。間違ってるかもしれないし、もっと違うかもしれません。

  • predict-onは過去の履歴を調べて補完候補を出すが、auto-fuは単純に一致するものを出している?
  • auto-fuは補完部分に色が付いたりする
  • predict-onは補完候補の一覧がでてくるタイミングがまちまちだが、auto-fuは一文字毎にカーソル位置にあった補完候補の一覧が表示される

predict-onよりauto-fu.zshの挙動のほうが好みのような気がしたので試用しています。ただ少し気になることがあって、それは一文字目から補完が開始されること。最初の何文字かは無視してほしい。そのような動作をさせるために以下のような変更をしました。

diff --git a/auto-fu.zsh b/auto-fu.zsh
index e3856d9..8a8fedc 100644
--- a/auto-fu.zsh
+++ b/auto-fu.zsh
@@ -416,6 +416,10 @@ with-afu-compfuncs () {
 }
 
 auto-fu () {
+  if [[ $#BUFFER -lt 3 ]] then
+    return
+  fi
+
   emulate -L zsh
   unsetopt rec_exact
   local LISTMAX=999999 

これで3文字未満は補完候補が表示されません。ひとまずその場しのぎで書いたものの、'3'という値は設定ファイルあたりで指定できるようにしたいので、zshの書きかた調べて修正したいと思ってます。