
lazygit 退出后如何让 shell 自动切换到所选择的仓库目录【免费下载链接】lazygitsimple terminal UI for git commands项目地址: https://gitcode.com/GitHub_Trending/la/lazygit在 lazygit 里切换到另一个仓库后退出默认情况下 shell 仍停留在启动 lazygit 时所在的目录需要手动cd回去。lazygit 内置了一个目录记录机制退出时把当前所在目录写到一个由环境变量LAZYGIT_NEW_DIR_FILE指定的文件里。按 README 的 Changing Directory On Exit 一节在 shell 启动文件中定义一个包装函数lg来设置该变量之后每次用lg启动 lazygit 并退出shell 就会自动cd到退出时在 lazygit 中的目录。本文只覆盖这一功能适用于已安装 lazygit、并能编辑 shell 配置文件zsh 的~/.zshrc其他 shell 用对应的 rc 文件的环境。机制说明包装函数做了三件事对应 record_directory_helper.go 的实现export LAZYGIT_NEW_DIR_FILE~/.lazygit/newdir在运行lazygit前设置环境变量。源码中该变量为空时不做任何记录变量被设置后lazygit 退出时会把当前工作目录写入该文件lazygit 退出后函数检查~/.lazygit/newdir是否存在存在则cd $(cat ...)进入其中记录的目录rm -f $LAZYGIT_NEW_DIR_FILE删除这个临时文件避免下次启动时读到过期的目录。该命令只会删除函数自己约定的临时文件~/.lazygit/newdir。因此这套机制只有通过lg函数启动时才生效直接运行lazygit时环境变量未设置不会写目录文件也不会有自动切换行为。配置步骤在~/.zshrc或使用中的其他 rc 文件末尾添加以下内容与 README 原文一致lg() { export LAZYGIT_NEW_DIR_FILE~/.lazygit/newdir lazygit $ if [ -f $LAZYGIT_NEW_DIR_FILE ]; then cd $(cat $LAZYGIT_NEW_DIR_FILE) rm -f $LAZYGIT_NEW_DIR_FILE /dev/null fi }让配置在当前 shell 生效source ~/.zshrc之后用lg代替lazygit启动。在 lazygit 里切换到你想要的仓库例如在仓库面板中选中其他仓库操作完成后按q退出。验证方式按 README 的描述成功条件是配置生效后when you calllgand exit youll switch directories to whatever you were in inside lazygit即退出后 shell 的当前目录就是退出时 lazygit 所在的目录。退出后运行pwd应显示你最后所在的仓库路径而不是启动lg前的路径。如果目录没有变化优先检查启动方式是否为lg而不是直接lazygit以及 rc 文件是否已source。保持原目录的退出方式README 指出可以用shiftQ代替q退出以覆盖自动切换行为。从 gui.go 的退出逻辑看此时 lazygit 记录的是启动时的初始目录InitialDir而非退出时的当前目录效果就是 shell 停留在或切回你启动 lazygit 的原始位置。限制文档示例以 zsh 的~/.zshrc为准其他 shell 需把函数写入自己的 rc 文件后再 source自动切换依赖lg函数在子进程中导出的环境变量任何绕过该函数的启动方式直接调用lazygit、脚本里写死二进制路径等都不会触发目录记录该功能不涉及在 lazygit 内部改变任何 git 状态只影响退出后 shell 的工作目录。【免费下载链接】lazygitsimple terminal UI for git commands项目地址: https://gitcode.com/GitHub_Trending/la/lazygit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考