とりあえず.zshrcを載せておきます。

PROMPT="%m:%n%% "
RPROMPT="[%~]"
SPROMPT="correct: %R -> %r ? "

#japanese
export LANG=ja_JP.UTF-8

##補完
autoload -U compinit
compinit

#ディレクトリ名だけでcd
setopt auto_cd
#自動的にpushd
setopt auto_pushd
#同じディレクトリをpushdしない
setopt pushd_ignore_dups
#aliasを補完候補に含める
setopt complete_aliases
#矢印キー補完
zstyle ':completion:*:default' menu select
# 補完候補が複数ある時、一覧表示 (auto_list) せず、すぐに最初の候補を補完する
setopt menu_complete

#スペルチェック
setopt correct
#補完候補を詰めて表示
setopt list_packed
setopt nolistbeep
## 最後のスラッシュを自動的に削除しない
setopt noautoremoveslash
## ヒストリを呼び出してから実行する間に一旦編集
setopt hist_verify
## カッコの対応などを自動的に補完
setopt auto_param_keys

## TAB で順に補完候補を切り替える
setopt auto_menu
# 補完候補が複数ある時に、一覧表示する
setopt auto_list
# 補完候補が複数ある時、一覧表示 (auto_list) せず、すぐに最初の候補を補完する
setopt menu_complete
# auto_list の補完候補一覧で、ls -F のようにファイルの種別をマーク表示
setopt list_types
# ディレクトリ名の補完で末尾の / を自動的に付加し、次の補完に備える
setopt auto_param_slash
## コマンドラインの先頭がスペースで始まる場合ヒストリに追加しない
setopt hist_ignore_space
#直前と同じコマンドをヒストリに追加しない
setopt hist_ignore_dups


##history
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
autoload history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^P" history-beginning-search-backward-end
bindkey "^N" history-beginning-search-forward-end

#key action
bindkey -e

#関数読み込み
[ -f ~/.zshrc.func ] &&  source ~/.zshrc.func

中でも

#矢印キー補完
zstyle ':completion:*:default' menu select

これができたときには感動しました。

参考にしたページ
Chrome เว็บสโตร์