缩小 oh-my-bash 电力线中的 cwd 路径

缩小 oh-my-bash 电力线中的 cwd 路径

我正在使用 oh-my-bash 的 powerline 主题,并且 cwd 提示符有时会变得太长。我在powerline.base.sh文件中找到了这个,我认为它正在返回密码:

function __powerline_cwd_prompt {
    echo "$(pwd | sed "s|^${HOME}|~|")|${CWD_THEME_PROMPT_COLOR}"
}

我希望修改它,以便压缩长目录,例如 ~/stuff/moreStuff/.../now 之类的内容。我对 BASH 不太了解,所以我想知道我应该怎么做?

答案1

我会很惊讶如果噢我的狂欢没有缩短路径的选项/功能。

尽管如此,这里还是一个缩短器的快速尝试(从一开始就缩短,这往往是传统):

#!/usr/bin/env bash

# Credit: https://stackoverflow.com/a/17841619/2858703
join_by() { local IFS="$1"; shift; echo "$*"; }

short_pwd() {
  IFS='/' read -a directory < <(pwd)

  local -i trim_level=${1:-3} # default trim level of 3

  if [ ${#directory[*]} -ge ${trim_level} ] && [ ${trim_level} -gt 0 ]; then
    join_by / "..." "${directory[@]: -${trim_level}}"
  else
    pwd
  fi
}

# examples
short_pwd
short_pwd 2
# these cause no trimming
short_pwd 0
short_pwd -1
short_pwd a

在当前形式下,您需要.获取它的来源(删除示例)才能使用它。或者将示例替换为short_pwd $1,您可以将其作为脚本运行(第一个传递的参数决定修剪级别)。

致谢这个答案

(我意识到这个问题可能以前已经被解决过很多次了,但有时尝试自己解决会很有趣。)

编辑:意识到我设计过度了。现在增添了优雅!

相关内容