【问题标题】:Collapse directories in zsh prompt在 zsh 提示符下折叠目录
【发布时间】:2015-06-21 09:11:22
【问题描述】:

我正在使用以下函数来生成我的zsh prompt

_sudar_collapsed_wd() {
  echo $(pwd | perl -pe "
   BEGIN {
      binmode STDIN,  ':encoding(UTF-8)';
      binmode STDOUT, ':encoding(UTF-8)';
   }; s|^$HOME|~|g; s|/([^/])[^/]*(?=/)|/\$1|g
")
}

基本上,这会将/Users/sudar/dir1/dir2/dir3/dir4 之类的路径转换为~/D/c/d/d/d/dir4,方法是折叠除当前目录之外的所有父目录。

但我不想折叠路径中的最后 3 个目录。所以/Users/sudar/dir1/dir2/dir3/dir4变成~/D/c/d/dir2/dir3/dir4

实际替换发生在这个正则表达式中:s|/([^/])[^/]*(?=/)|/\$1|g

如何更改此正则表达式,使其不替换路径中的最后 3 个目录?

【问题讨论】:

    标签: regex perl zsh


    【解决方案1】:

    你可以用这个,

    s|^$HOME|~|g; s|/([^/])[^/]*(?=/[^/]*/[^/]*/)|/\$1|g
    

    它检查匹配项后面必须跟至少三个正斜杠。

    DEMO

    【讨论】:

      猜你喜欢
      • 2017-12-29
      • 2012-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      相关资源
      最近更新 更多