我如何检查当前 shell 是否正在被 vim 使用?

我如何检查当前 shell 是否正在被 vim 使用?

我在运行 OS X。在 vim 上,如果你执行:sh命令,你可以进入 shell 来执行命令。我经常忘记我是否在这个 shell 中。

有什么方法可以检查我是否处于来自 vim 的 shell 中?

答案1

env | grep vim列出 vim 传递给 shell 的环境变量。VIMRUNTIME如果您还没有从 vim 启动 shell,我怀疑它是否已定义。

答案2

我输入ps(不带任何选项)并查看 vim 是否列出。

答案3

您可以查看 shell 父进程的命令名称:ps -o comm= -p $PPID。例如,您可以更改提示以包含父进程 ID。

此外,如果您只想在未直接在终端仿真器内运行的 shell 中更改提示符,您可以通过检查 shell 的控制终端是否与其父进程的控制终端相同来测试这一点。如果父进程是终端仿真器,则它不会有自己的终端作为控制终端。

例如,如果你在~/.kshrc~/.bashrc或中输入以下几行~/.zshrc(选择适合你的 shell 的一行),{vim}并且 shell 在 下运行,你的提示符将以 开始vim

parent_command=$(ps -o comm= -p $PPID)
parent_command=${parent_command##*/}
if [ "$(ps -o tty= -p $$)" = "$(ps -o tty= -p $PPID)" ]; then
  # Not running directly under a terminal emulator
  PS1="{$parent_command}$PS1"
fi

您可能还对以下讨论感兴趣如何知道我所处的 shell 的“级别”?

答案4

您可以使用 MacVim (http://code.google.com/p/macvim/)。无论你的 shell 是否来自 vim 实例,这一点都很明显,因为你的 shell 位于 MacVim 窗口而不是终端窗口中。

相关内容