如何检查它是否仍处于Vim shell模式

Sta*_*tan 5 vim

在vim中,键入:sh将切换到shell,exit可退出shell并返回vim.有没有命令检查它是否处于vim shell模式?这样我就不会意外地vim再次打开同一个文件.我想避免以下情况:

vim myfile > :sh > exit > vim myfile //得到另一个vim实例的警告正在编辑同一个文件

这些是正常情况:
vim myfile > :sh > exit //继续编辑
vim myfile > :wq > vim myfile //继续编辑

ZyX*_*ZyX 5

除了@a3nm答案之外,你还能做的是

\n\n
    \n
  1. use pstree -h: 它将输出当前分支高亮的进程树,你需要检查的是高亮中是否有vim。
  2. \n
  3. 另一种可能性是ps t:它将显示使用当前终端的所有进程,并且vim当您在里面时应该显示在列表中:shps -oargs t如果你想知道运行 vim 时使用的参数,可能会更有用。
  4. \n
\n\n

这些方法更可靠VIMRUNTIME,因为VIMMYVIMRC环境变量可能会被您覆盖以进行一些自定义(顺便说一句,它们是由 vim 定义的,用于 vimscripts,而不是由:sh)。它们还适用于允许您运行子 shell 的其他进程,但不定义任何环境变量。

\n\n

我还建议考虑<C-z>在正常模式下使用或在 Ex 中使用:suspend/ :stop,因为这些使用 shell vim 启动而不是创建新的。此行为使您可以访问运行 vim 之前键入的命令的历史记录,还使您能够编写更复杂且耗时的 shell 配置,而无需每次都等待。

\n\n

如果您使用<C-z>这两种方法仍然有效,但第一种方法不会突出显示 vim,因为它将与自身处于同一级别(具有相同的父级) ,可能位于图表的pstree下方或上方。pstree这也启用了第三种方法:jobsshell 内置。

\n\n

为了从中恢复,<C-z>您应该使用fg(zsh 和 bash 中的单个%也可以),这比键入更少exit(但更多<C-d>)。

\n