繁体   English   中英

如何设置 IntelliJ 以记住会话之间的 Git Bash 当前工作目录?

[英]How can I setup IntelliJ to remember Git Bash current working directory between sessions?

我在 Windows 7 上运行 IntelliJ 2018.3 以及 openSUSE Leap 15。在 Windows 7 下,我已将 IntelliJ 配置为使用 Git Bash,即在设置中,在Tools -> Terminal ,我将Shell path设置为:

C:\Program Files (x86)\Git_2.17.1\bin\bash.exe

IntelliJ 的新功能之一是能够保存和重新加载终端会话(请参阅此链接)。

它与 openSUSE 完美配合,但是,在 Windows 上,虽然终端选项卡名称已正确恢复,但我总是以新的 shell 结束。

有没有办法让 IntelliJ 和 Git Bash 一起玩得很好,这样我就可以在重新启动 IntelliJ 后保留当前的工作目录和 shell 历史记录?

这是一个可能的解决方法。 它深受VonC 的回答以及他提到问题的其他回答的启发。

~/.bashrc

if [[ -v __INTELLIJ_COMMAND_HISTFILE__ ]]; then
    __INTELLIJ_SESSION_LASTDIR__="$(cygpath -u "${__INTELLIJ_COMMAND_HISTFILE__%history*}lastdir${__INTELLIJ_COMMAND_HISTFILE__##*history}")"

    # save path on cd
    function cd {
        builtin cd $@
        pwd > $__INTELLIJ_SESSION_LASTDIR__
    }

    # restore last saved path
    [ -r "$__INTELLIJ_SESSION_LASTDIR__" ] && cd $(<"$__INTELLIJ_SESSION_LASTDIR__")
fi

我不喜欢我必须包装cd命令的事实,但是除非我明确调用exitlogout ,否则 Git Bash 不会执行~/.bash_logout 不幸的是,由于此限制, .bash_logout变体不适用于上述场景。

上面的解决方法还在__INTELLIJ_COMMAND_HISTFILE__父目录中留下小垃圾文件,但是,我不能做得更好。

此外,我在 Jetbrain 的问题跟踪器中开了一张票 有许多不同的 shell 可以从官方支持中受益。 如果 JetBrains 最终能够支持和流行的终端,如 ,那就太好了。 目前对我来说开箱即用的唯一 shell 是

您可以尝试为 Windows bash 设置 Git 以记住您上次使用的路径,如“如何从窗口管理器键绑定在上次使用的终端的同一目录中打开新终端?

例如:

因此,不是在每次调用 cd 时都存储路径,而是可以在退出时保存最后一个路径。

我的~/.bash_logout很简单:

 echo $PWD >~/.lastdir

在我的.bashrc某处,我放置了这一行:

 [ -r ~/.lastdir ] && cd $(<~/.lastdir)

这并不直接依赖于 Intellij IDEA,而是依赖于底层的 bash 设置(这里是 Intellij IDEA 引用和使用的 Git for Windows bash。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM