在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
//继续编辑
除了@a3nm答案之外,你还能做的是
\n\npstree -h
: 它将输出当前分支高亮的进程树,你需要检查的是高亮中是否有vim。ps t
:它将显示使用当前终端的所有进程,并且vim
当您在里面时应该显示在列表中:sh
。ps -oargs t
如果你想知道运行 vim 时使用的参数,可能会更有用。这些方法更可靠VIMRUNTIME
,因为VIM
和MYVIMRC
环境变量可能会被您覆盖以进行一些自定义(顺便说一句,它们是由 vim 定义的,用于 vimscripts,而不是由:sh
)。它们还适用于允许您运行子 shell 的其他进程,但不定义任何环境变量。
我还建议考虑<C-z>
在正常模式下使用或在 Ex 中使用:suspend
/ :stop
,因为这些使用 shell vim 启动而不是创建新的。此行为使您可以访问运行 vim 之前键入的命令的历史记录,还使您能够编写更复杂且耗时的 shell 配置,而无需每次都等待。
如果您使用<C-z>
这两种方法仍然有效,但第一种方法不会突出显示 vim,因为它将与自身处于同一级别(具有相同的父级) ,可能位于图表的pstree
下方或上方。pstree
这也启用了第三种方法:jobs
shell 内置。
为了从中恢复,<C-z>
您应该使用fg
(zsh 和 bash 中的单个%
也可以),这比键入更少exit
(但更多<C-d>
)。