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)
归档时间: |
|
查看次数: |
1203 次 |
最近记录: |