在 vim 中,我可以访问 bash 环境变量,例如 $PWD 和 $PATH。我也想知道如何在 vim 中访问我的临时 shell 变量。
例如,假设我在终端中定义一个变量foo="bar"
。然后我输入 vim 并尝试使用以下命令访问该变量:!echo $foo
,但它不识别这个变量。根据我的理解,vim 每次调用 bash 命令时都会启动一个新的 shell,然后立即关闭它。有没有办法在 vim 中使用与我的局部变量相同的 shellfoo
定义于?
不,您无法从它生成的子进程与父 shell 进行交互(没有该 shell 的积极参与,这在当前的场景中不合理/实际上可用)——但是您can导出变量以使子进程中启动的新 shell 可以访问它们。
Running
set -a
...将使任何未来定义的变量自动导出到环境中,即使没有显式的export
命令。
因为(与 Csystem()
函数)vim 的system()
荣誉SHELL
环境变量,如果SHELL=/bin/bash
(or :set shell=/bin/bash
已在 vim 中运行),您还可以从 vim 调用导出的函数。也就是说,如果您定义该函数并将其导出,如下所示:
foo() { echo "bar"; }
export -f foo
...然后你可以调用它!foo
从 vim 内部。
然而,即使如此,它也是在一个新的瞬态 shell 实例中运行,而不是在原始父进程中运行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)