# From https://stackoverflow.com/a/45336078
paths=(${(s:/:)PWD})

cur_path='/'
cur_short_path='/'
for directory in ${paths[@]}
do
    cur_dir=''
    for (( i=0; i<${#directory}; i++ )); do
        cur_dir+="${directory:$i:1}"
        matching=("$cur_path"/"$cur_dir"*/)
        if [[ ${#matching[@]} -eq 1 ]]; then
            break
        fi
    done
    cur_short_path+="$cur_dir/"
    cur_path+="$directory/"

    if [[ $cur_path == $HOME/ ]];
    then cur_short_path='~/'
    fi
done

printf %b "${cur_short_path: : -1}"
echo