diff --git a/README.md b/README.md index 787e98f6..0b130120 100644 --- a/README.md +++ b/README.md @@ -279,11 +279,11 @@ to a certain length: To change the way how the current working directory is truncated, just set: - # truncate whole directories - POWERLEVEL9K_SHORTEN_STRATEGY="complete_directories" + # truncate the middle part + POWERLEVEL9K_SHORTEN_STRATEGY="truncate_middle" # truncate from right, leaving the first X characters untouched POWERLEVEL9K_SHORTEN_STRATEGY="truncate_from_right" - # default behaviour is to truncate the middle part of the directory + # default behaviour is to truncate whole directories In each case you have to specify the length you want to shorten the directory to. So in some cases `POWERLEVEL9K_SHORTEN_DIR_LENGTH` means characters, in diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme index 4ee919cc..7ce0a5f9 100644 --- a/powerlevel9k.zsh-theme +++ b/powerlevel9k.zsh-theme @@ -484,14 +484,14 @@ prompt_dir() { if [[ -n "$POWERLEVEL9K_SHORTEN_DIR_LENGTH" ]]; then case "$POWERLEVEL9K_SHORTEN_STRATEGY" in - complete_directories) - current_path="%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:.../:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c" + truncate_middle) + current_path=$(pwd | sed -e "s,^$HOME,~," | sed -E "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})\//\1\.\.\2\//g") ;; truncate_from_right) current_path=$(pwd | sed -e "s,^$HOME,~," | sed -E "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+\//\1..\//g") ;; *) - current_path=$(pwd | sed -e "s,^$HOME,~," | sed -E "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})\//\1\.\.\2\//g") + current_path="%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:.../:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c" ;; esac