shell - 如何使用fish_prompt_pwd_dir_length 在提示中更改fish pwd 长度?

标签 shell fish

我希望 fish shell 在提示中显示完整路径。看着 source pwd_prompt 我看到一个名为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"'}\)[^/]*/-\1/-g'
end

注意:我在 OS X 上,所以我扔掉了一堆与它无关的代码,所以它可能无法在其他操作系统上运行。

更新:
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

关于shell - 如何使用fish_prompt_pwd_dir_length 在提示中更改fish pwd 长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33714385/

相关文章:

macos - 每个新提示都会触发错误

shell - fish shell 似乎忽略了 LD_LIBRARY_PATH?

Fish动态定义一个函数

bash - 从文件中删除非显示字符

linux - 在 BASH 参数扩展中用代字号 "~"替换子字符串时的行为不一致

shell - zsh 自动完成菜单的 TAB 数量不一致

string - fish shell : validate if string contains substring

shell - `sudo su` 和 `sudo fish` 之间的区别

shell - 将 SFTP 输出捕获到变量时出现问题

json - 如果键匹配,则从 bash 中的 json 中提取特定键值