fancy-ctrl-z () {
  emulate -LR zsh
  if [[ $#BUFFER -eq 0 ]]; then
    [[ -n $(jobs -s) ]] && bg
    zle redisplay
  else
    zle push-input
  fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z

function fancy-ctrl-d() {
  zle || exit 0
  [[ -n $BUFFER ]] && return
  typeset -g precmd_functions=(fancy-ctrl-d)
  zle accept-line
}
zle -N fancy-ctrl-d
bindkey '^D' fancy-ctrl-d
setopt ignore_eof

# word navigation for urxvt
bindkey -e
bindkey ';5C' emacs-forward-word
bindkey ';5D' emacs-backward-word