gpt4 book ai didi

bash - 在 vim 中访问本地 shell 变量

转载 作者:行者123 更新时间:2023-12-05 08:53:45 28 4
gpt4 key购买 nike

在 vim 中,我可以访问我的 bash 环境变量,例如 $PWD 和 $PATH。我也想知道如何在 vim 中访问我的临时 shell 变量。

例如,假设我在我的终端中定义了一个变量 foo="bar"。然后我进入 vim 并尝试使用以下命令访问此变量 :!echo $foo,但它无法识别此变量。据我了解,每次调用 bash 命令时 vim 都会启动一个新的 shell,然后立即将其关闭。有没有办法在 vim 中使用定义我的局部变量 foo 的同一个 shell?

最佳答案

不,您不能从它生成的子进程与父 shell 交互(没有该 shell 的积极参与,这在手头的场景中不合理/实际上不可用)——但您可以 导出您的变量,使子进程中启动的新 shell 可以访问它们。

运行

set -a

...将使任何定义的变量自动导出到环境中,即使没有显式的export命令也是如此。


因为(与 C system() 函数不同)vim 的 system() 遵循 SHELL 环境变量,如果 SHELL=/bin/bash (或 :set shell=/bin/bash 已在 vim 中运行),您还可以从 vim 中调用导出的函数。也就是说,如果您定义函数并将其导出如下:

foo() { echo "bar"; }
export -f foo

...然后您可以在 vim 中使用 !foo 调用它。

然而,即便如此,它还是在一个新的 transient shell 实例中运行,而不是在原始父进程中运行。

关于bash - 在 vim 中访问本地 shell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996503/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com