如何使用fish_prompt_pwd_dir_length更改提示中的鱼鳍长度?

时间:2015-11-14 22:59:28

标签: shell fish

我希望鱼壳在提示中显示完整路径。看一下pwd_prompt的source,我看到一个名为fish_prompt_pwd_dir_length的变量,如果我把它设置为0,它应该做我想要的。

但是当我做set -U fish_prompt_pwd_dir_length 0时没有任何事情发生。

查看fish_config变量选项卡,我看到此var设置为0,但仍显示路径减少。

我做错了什么,如果不编写自己的pwd_prompt函数,你真的能做到吗?

2 个答案:

答案 0 :(得分:3)

UPD(2016年6月20日):

从版本2.3.0(现在是最近的版本)开始按预期工作

上一个回答:

到目前为止,我的解决方法是将prompt_pwd复制到新函数prompt_pwd_full中,并将其弄乱一点。

prompt_pwd_full.fish:

set -l args_pre
set args_pre $args_pre -e 's|^/private/|/|'

function prompt_pwd_full -V args_pre
  set -q fish_prompt_pwd_dir_length; or set -l fish_prompt_pwd_dir_length 1

  if [ $fish_prompt_pwd_dir_length -eq 0 ]
    set -l fish_prompt_pwd_dir_length 99999
  end

  set -l realhome ~
  echo $PWD | sed -e "s|^$realhome|~|" $args_pre -e 's-\([^/.]{'"$fish_prompt_pwd_dir_length"'}\)[^/]*/-\1/-g'
end

注意:我在OS X上,所以我抛弃了一堆与它无关的代码,因此它可能在其他操作系统中无效。

<强> UPD: 正如评论中提到的faho一样,没有特别的理由将/private/重写为/,所以我的功能现在看起来像这样:

function prompt_pwd_full
  set -q fish_prompt_pwd_dir_length; or set -l fish_prompt_pwd_dir_length 1

  if [ $fish_prompt_pwd_dir_length -eq 0 ]
    set -l fish_prompt_pwd_dir_length 99999
  end

  set -l realhome ~
  echo $PWD | sed -e "s|^$realhome|~|" -e 's-\([^/.]{'"$fish_prompt_pwd_dir_length"'}\)[^/]*/-\1/-g'
end

答案 1 :(得分:1)

Repeated column in mapping for entity...添加到set -g fish_prompt_pwd_dir_length 80对我有用。我的鱼的版本是3.0.2