Vim:在shell转义时更改提示

jay*_*ren 3 vim shell

我经常:sh在vim中编辑文件时使用,这样我就可以在返回编辑文件之前执行git提交之类的小任务.但是,有时我会混淆我的shell是否是由我的终端模拟器启动的,或者它是作为vim子shell启动的,因此exit在提示符下输入总是冒着意外关闭终端模拟器而不是回到我的vim编辑会话的风险.有没有办法让vim修改我的提示,可能是$PS1环境变量,当我从vim启动一个shell时,我知道我是否在vim启动的子shell中?

rom*_*inl 8

执行此操作时: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)