Closed zzhaolei closed 6 months ago
好的。我还没试过fish。晚一点测试一下。感谢提出。
目前在 fish 中 vm_env.sh 依然是 zsh 的脚本,其中包含 zsh 版本的 cdhook,可以调整为 fish 的脚本。
完整的脚本示例
vm_env.fish
:function _vmr_cdhook --on-variable PWD --description "version manager cd hook" vmr use -E end fish_add_path --prepend $HOME/.vm $HOME/.vm/bin
~/.config/fish/config.fish
:# ... . ~/.vm/vm_env.fish
或者使用更 fish 的用法,
~/.config/fish/conf.d/vmr.fish
:function _vmr_cdhook --on-variable PWD --description "version manager cd hook" vmr use -E end fish_add_path --global $HOME/.vm $HOME/.vm/bin
有兴趣贡献代码么?
我手头没有fish shell,如果要实现这个的话,要等一些时候。
管理环境变量的模块在internal/envs/中,生成cd命令hook的模块在pkgs/locker/中。感兴趣的可以fork代码尝试一下。
ok,上午我已经看了下代码,等我晚上或明天可以提个 PR
@moqsien 单独 add env 的功能是什么场景下的?
@moqsien 单独 add env 的功能是什么场景下的?
比如对于maven,可能会有MAVEN_ROOT之类的环境变量。vmr在开发过程中不可能每个SDK都考虑到所有的环境变量,又为了方便统一,让.bashrc和.zshrc更整洁,用户可以自行通过env命令单独添加这类暂时没有被vmr自动配置的环境变量。
go的GOROOT, GOPATH, GOBIN, GOPROXY同理。
通过这种方式配置添加和删除都会有一些问题,也不优雅,我建议删掉 env 这个选项,让用户自己去 shell 的配置文件中设置。
主要问题是,执行命令添加环境变量后当前 shell 是不会生效的,需要重载 shell 才能生效,所以我认为这个东西是没必要的,不如用户自己去设置环境变量来的灵活和方便。
go的GOROOT, GOPATH, GOBIN, GOPROXY同理。
比如这些环境变量,我作为一个 gopher,我就已经提前添加了这些东西,放到 shell 的配置文件中,这样更统一,还能和其他 dotfiles 一起管理。
你说的其他的环境变量用户肯定是跟着网上的教程走,也不会想到用 vmr 的环境管理功能。
通过这种方式配置添加和删除都会有一些问题,也不优雅,我建议删掉 env 这个选项,让用户自己去 shell 的配置文件中设置。
主要问题是,执行命令添加环境变量后当前 shell 是不会生效的,需要重载 shell 才能生效,所以我认为这个东西是没必要的,不如用户自己去设置环境变量来的灵活和方便。
go的GOROOT, GOPATH, GOBIN, GOPROXY同理。
比如这些环境变量,我作为一个 gopher,我就已经提前添加了这些东西,放到 shell 的配置文件中,这样更统一,还能和其他 dotfiles 一起管理。
你说的其他的环境变量用户肯定是跟着网上的教程走,也不会想到用 vmr 的环境管理功能。
只是提供了这个功能,不强制使用。对于有洁癖的用户,可以使用。比如我自己,哈哈。我看着这些环境变量分散在各处,就难受,哈哈哈。
目前在 fish 中 vm_env.sh 依然是 zsh 的脚本,其中包含 zsh 版本的 cdhook,可以调整为 fish 的脚本。
完整的脚本示例
vm_env.fish
:~/.config/fish/config.fish
:或者使用更 fish 的用法,
~/.config/fish/conf.d/vmr.fish
: