我经常:sh在vim中编辑文件时使用,这样我就可以在返回编辑文件之前执行git提交之类的小任务.但是,有时我会混淆我的shell是否是由我的终端模拟器启动的,或者它是作为vim子shell启动的,因此exit在提示符下输入总是冒着意外关闭终端模拟器而不是回到我的vim编辑会话的风险.有没有办法让vim修改我的提示,可能是$PS1环境变量,当我从vim启动一个shell时,我知道我是否在vim启动的子shell中?
执行此操作时:sh,可以使用一些其他特定于Vim的shell变量.在这台机器上,我有:
$MYVIMRC
$VIM
$VIMRUNTIME
Run Code Online (Sandbox Code Playgroud)
$VIM例如,您可以在*rc文件中使用如下:
if [ $VIM ]
then
# set your vim-specific PS1 here
else
# set your normal PS1 here
fi
Run Code Online (Sandbox Code Playgroud)
额外奖励:在GVim/MacVim中,你所做的伪终端:sh无法显示颜色.因为Vim将其导出为dumb,你可以使用与上面相同的逻辑在GVim/MacVim中有单色提示和shell中的颜色提示:
if [ $TERM == 'dumb' ]
then
# no colors
else
# colors
fi
Run Code Online (Sandbox Code Playgroud)