diff options
Diffstat (limited to 'zsh/.zsh/functions/spwd')
-rw-r--r-- | zsh/.zsh/functions/spwd | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/zsh/.zsh/functions/spwd b/zsh/.zsh/functions/spwd new file mode 100644 index 0000000..15aef1b --- /dev/null +++ b/zsh/.zsh/functions/spwd @@ -0,0 +1,25 @@ +# 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 |