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