所以我参考了一些关于Vim默认设置的参考资料,我发现在$VIMRUNTIME/defaults.vim中有一个默认设置文件,所以我try 打印$VIMRUNTIME变量

  1. 我try 在Vim命令中使用!,我使用!echo $VIMRUNTIME,它打印了一条路径
  2. 我在使用echo $VIMRUNTIME的普通终端上进行了try ,但它打印了一个空行

我认为!只是调用终端中的命令,但输出有所不同.

这是怎么发生的?我是Linux的新手,所以我可能遗漏了一些东西.

我唯一的猜测是这个变量是在VIM运行时设置的,但后来我try 在VIM运行时在终端中执行该命令,但终端中仍然有一个空行.

推荐答案

你错过了environment的概念.顾名思义,environment variables居住在一个环境中.它们可以从父母传给子元素,但反之亦然. 您可能熟悉您最喜欢的编程语言中的类似概念.

在您的具体示例中,Vim创建了VIMRUNTIME个(根据:help VIMRUNTIME)并将其继承到其子进程.这就是为什么它在:!:sh:terminal等命令中可见.

它在不相关的终端中不可见.这是件好事.想象一下,你想要try 一些东西,并将例如VIMRUNTIME设置为某个时髦的值.您不希望您现有的Vim会话发现并开始行为不端.

回到您最初的问题:要找出Vim从哪里加载什么,:scriptnames命令可能会派上用场.上述:help VIMRUNTIME还提供了从shell 访问VIMRUNTIME的代码片段.

Linux相关问答推荐

一个bash脚本,用于基于2列映射文件替换多个文件名中的模式

如何注释掉SLURM中的延迟调度命令?

Shell 脚本程序 - 从日志(log)文件中过滤磁盘空间利用率超过 80% 的行

Linux 的 __fastfail 替代方案?

为什么在已连接的设备上调用 btmgmt conn-info 返回:状态 0x02(未连接)

在查找命令中使用 printf

为什么 perf stat 不计算 cycles:u 在 BIOS 中禁用超线程的 Broadwell CPU 上?

如何使用 awk 重新排列列?

使用 awk 将 csv 拆分为带有标题的多个文件

如何判断 Linux 机器是否支持 AVX/AVX2 指令?

如何使用 __attribute__((visibility("default")))?

如何指定链接时使用的库版本?

在 bash 中检测公共 IP 地址的方法

如何在 Linux 中使用单行命令获取 Java 版本

根据文件名模式和文件内容列出文件名?

如何使用 bash 在文件中间添加一行文本?

Shell 脚本, echo 消息后在同一行读取

Docker:您是否try 连接到没有 TLS 的启用 TLS 的守护进程?

什么是 linux 脚本中的 start-stop-daemon?

/dev/random 非常慢?