vol*_*evo 5 vim bash command-line
我经常使用vim,并且经常发现使用它进入命令行非常有用!bash.但是,我需要键入exit以返回到vim,有时我不确定我是否在子shell中或者是否会关闭我的会话.
我真正想要做的是输入类似的东西!bash -prompt "subshell",我得到这样的东西:
subshell$ <commands go here>
Run Code Online (Sandbox Code Playgroud)
这可能吗?
最直接的方法是PS1在vim中设置环境变量:
:let $PS1="subshell$ "
Run Code Online (Sandbox Code Playgroud)
并使用命令:shell而不是启动子shell :!bash.
使用$符号let修改环境变量.将其添加到.vimrc以保留设置.
或者,使用:shell您可以使用shell选项指定更具体的命令,包括参数,请参阅help shell和help 'shell'.
所以:
:set shell=bash\ --rcfile\ ~/.vimbashrc
Run Code Online (Sandbox Code Playgroud)
在.vimbashrc中添加PS1="subshell ",并使用:shell而不是使用调用子shell !bash.将其添加到.vimrc以保留设置.
所以你有两个选择:
let $PS1="subshell "到.vimrc,并使用:shell而不是使用启动子shell :!bash.PS1="subshell ",并修改.vimrc中的shell选项:.set shell=bash\ --rcfile\ ~/.vimbashrc最后,如果必须使用:!bash启动子shell,还有几个选项.请注意,您还可以使用更具体的命令行!,例如:
:PS1="subshell$ " bash 应该管用.:!bash\ --rcfile\ ~/.vimbashrc,并PS1在上面的.vimbashrc中设置但是,你需要这些输入每一次,或者为它定义的映射.
使用shell变量$SHLVL似乎是另一种选择.加入$SHLVL你的$PS1:
export PS1="$PS1 $SHLVL"
Run Code Online (Sandbox Code Playgroud)
所以你的提示看起来像这样:
[tim@RackAblade47 ~]$ 2
Run Code Online (Sandbox Code Playgroud)
当你从VIM启动shell时,$SHLVL会增加:
[tim@RackAblade47 ~]$ 4
Run Code Online (Sandbox Code Playgroud)