所以我在关注一些关于 Vim 默认值的资源,我发现 $VIMRUNTIME/defaults.vim
中有一个默认文件,所以我尝试打印 $VIMRUNTIME
变量
- 我在 Vim 命令中尝试使用
!
,我使用了!echo $VIMRUNTIME
并且它打印了一个路径 - 我在普通终端中尝试使用
echo $VIMRUNTIME
但它打印了一个空行
我以为 !
只是调用终端中的命令,但输出有所不同。
这是怎么发生的?我是 Linux 新手,所以也许我遗漏了一些东西。
我唯一的猜测是这个变量是在 VIM 运行时设置的,但后来我尝试在 VIM 运行时在终端中执行该命令,但终端中仍然有一个空行。
最佳答案
您缺少环境的概念。顾名思义,环境变量驻留在环境中。它们可以从 parent 遗传给 child ,但反之则不然。 您可能在您最喜欢的编程语言中熟悉此类概念。
在您的具体示例中,Vim 创建 VIMRUNTIME
(根据 :help VIMRUNTIME
)并将其继承到其子进程。这就是为什么它在 :!
、:sh
或 :terminal
等命令中可见。
它在不相关的终端中不可见。这是好事。想象一下您想尝试一些东西并设置例如VIMRUNTIME
到一些时髦的值。您不希望现有的 Vim session 发现它并开始出现异常行为。
回到最初的问题:要找出 Vim 从哪里加载内容,:scriptnames
命令可能会派上用场。前面提到的 :help VIMRUNTIME
还提供了一个从 shell 访问 VIMRUNTIME
的代码片段。
关于linux - 变量在 vim 中打印正常,但在 bash shell 中却不行,这是怎么发生的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77229061/