如何使用 fish_prompt_pwd_dir_length 更改提示符中的 fish pwd 长度?
How do you change fish pwd length in prompt using fish_prompt_pwd_dir_length?
我希望 fish shell 在提示中显示完整路径。查看 pwd_prompt 的 source 我看到一个名为 fish_prompt_pwd_dir_length 的变量,如果我将它设置为 0,它应该可以满足我的要求。
但是当我这样做时 set -U fish_prompt_pwd_dir_length 0
没有任何反应。
查看 fish_config
变量选项卡,我看到此变量设置为 0,但显示的路径仍然减少。
我哪里做错了,你真的可以在不编写自己的 pwd_prompt 函数的情况下做到这一点吗?
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"'}\)[^/]*/-/-g'
end
注意:我在 OS X 上,所以我扔掉了一堆与它无关的代码,所以它可能在其他 OS 中不起作用。
更新:
正如 在评论中指出的那样,没有特别的理由将 /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"'}\)[^/]*/-/-g'
end
将 set -g fish_prompt_pwd_dir_length 80
添加到 ~/.config/fish/config.fish
对我有用。我的鱼版本是3.0.2
我希望 fish shell 在提示中显示完整路径。查看 pwd_prompt 的 source 我看到一个名为 fish_prompt_pwd_dir_length 的变量,如果我将它设置为 0,它应该可以满足我的要求。
但是当我这样做时 set -U fish_prompt_pwd_dir_length 0
没有任何反应。
查看 fish_config
变量选项卡,我看到此变量设置为 0,但显示的路径仍然减少。
我哪里做错了,你真的可以在不编写自己的 pwd_prompt 函数的情况下做到这一点吗?
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"'}\)[^/]*/-/-g'
end
注意:我在 OS X 上,所以我扔掉了一堆与它无关的代码,所以它可能在其他 OS 中不起作用。
更新:
正如 /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"'}\)[^/]*/-/-g'
end
将 set -g fish_prompt_pwd_dir_length 80
添加到 ~/.config/fish/config.fish
对我有用。我的鱼版本是3.0.2