在 Vi/Vim 中,我可以输入:
:shell
掉进壳里。
有什么方法可以检测我是否处于 Vi 生成的子 shell 中?
环境变量 SHLVL 为 2,但这并没有明确告诉我我处于维姆- 生成的子 shell。
在 OS X 上,还设置了以下变量:MYVIMRC
,,VIMRUNTIME
。VIM
这些有多通用?我可以指望这些在任何系统中设置,当且仅当我在 Vi/Vim 子 shell 中时?
如果没有,是否有任何可移植、强大且有效的方法来判断我处于 Vi/Vim 子 shell 中?
谢谢。
答案1
我在装有 Vim 7.2 的 Ubuntu 9.10 中以及装有 Vim 7.2 的 Cygwin 1.7 中看到了相同的变量。
请注意,MYVIMRC
如果没有.vimrc
文件,则可能不存在。
答案2
我不太了解 OSX,但如果它有一个 /proc 文件系统,您可能可以检查父进程的名称,如下所示:
parent=$(</proc/$PPID/exename)
if expr match $parent $(which vim) > /dev/null
then
...
fi