如何检查它是否';它仍处于Vim外壳模式
在vim中,键入:sh将切换到shell,而exit可以退出shell并返回vim。是否有命令检查它是否处于vim外壳模式?这样我就不会意外地再次打开同一个文件。我希望避免以下情况:如何检查它是否';它仍处于Vim外壳模式,vim,Vim,在vim中,键入:sh将切换到shell,而exit可以退出shell并返回vim。是否有命令检查它是否处于vim外壳模式?这样我就不会意外地再次打开同一个文件。我希望避免以下情况: vim myfile>:sh>exit>vim myfile//获取另一个vim实例正在编辑同一文件的警告 这些是正常情况: vim myfile>:sh>退出//继续编辑 vim myfile>:wq>vim myfile//继续编辑vim中的:sh命令似乎定义了VIMRUNTIME、vim和MYVIMRC环境变
vim myfile>:sh>exit>vim myfile
//获取另一个vim实例正在编辑同一文件的警告
这些是正常情况:vim myfile>:sh>退出
//继续编辑vim myfile>:wq>vim myfile
//继续编辑vim中的:sh
命令似乎定义了VIMRUNTIME
、vim
和MYVIMRC
环境变量,因此您只需检查它们是否已定义。为此,您可以运行echo$VIM
,例如,它应该在普通shell中返回空行,在从VIM
运行的shell中返回类似/usr/share/VIM
的内容。除了@a3nm answer之外,您还可以
pstree-h
:它将输出当前分支高亮显示的进程树,您需要检查的是高亮显示中是否有vimps t
:当您在:sh
内时,它将显示使用当前终端的所有进程,并应在列表中显示vim
ps-oargs t
在您想知道运行vim时使用的参数时可能更有用VIMRUNTIME
、VIM
和MYVIMRC
环境变量,以便进行一些定制(顺便说一句,它们是由VIM定义的,用于vimscripts中,而不是由:sh
)。它们还适用于允许您运行子shell但不定义任何环境变量的其他进程
我也建议在正常模式或代码>中考虑使用<代码> <代码>:暂停< /代码> />代码>:在EX中停止< /代码>,因为这些使用的shell VIM是从新创建的,而不是创建新的。通过此行为,您可以访问在运行vim之前键入的命令的历史记录,还可以编写更复杂和耗时的shell配置,而无需每次等待
在使用
的情况下,这两种方法仍然有效,但第一种方法不会突出显示vim,因为它将与pstree
本身处于同一级别(具有相同的父级),可能正好位于图中pstree
的下方或上方。这还启用了第三种方法:jobs
shell内置
为了从
进行恢复,您应该使用fg
(在zsh和bash中使用一个%
),它比退出更容易键入(但比
更多)