vim和bash之间快速切换

vim和bash之间快速切换

 

当你在vim中快速编辑的时候,你想要执行几个bash命令,比如说

cd到某个目录,查看当前目录,然后再创建个文件夹

但是你又不想退出vim,又不想在vim的命令行使用

:!命令

的方式,因为这样不方便,尤其输入很长的命令的时候。

还有最为快捷的方式:

shift+k

另外一种方式:

这时候可以使用vim的sh命令,

:sh

直接切换到bash,完成之后在exit就退回到vim中了。

这个过程实际上是启动了一个bash进程,它属于vim的子进程。

 

但是这个来回切换的过程中,我们就会忘了,我们到底进行了几次vim的sh和bash的exit,这个很像一个栈的操作,进栈和出栈。有一次我弄乱了这个进栈和出栈的平衡,进栈次数太多,也就是太多了,vim然后vim sh,结果一个文件被多个vim打开。

 

那么怎么知道我们进栈和出栈是否平衡,没有形成

bash->vim->bash->vim->bash

这样进程树呢?下面是我们希望的

bash->vim->bash

退栈后

bash->vim

进栈又变成

bash->vim->bash

在linux中我们的bash也是一个进程,所有的进程都有自己的父进程,除了init这个进程,形成了一个以init根的进程树,这样我们可以打印出这个进程树,看看我们当前bash对应的进程在什么位置。

每个进程对应一个进程号码,通过这个号码和打印出的进程号码匹配。

我们想想是不是先需要知道 当前bash所对应的进程号码通过

echo $$

命令可以得出。

打印进程树我们不用pstree因为这个命令只能答应出名字,不能打印出进程号码,我们用

ps auxf

关进是f这个选项,打印进程树的关键,我们再结合grep命令

ps auxf | grep $$

如果输出结果是

ps auxf | grep $$

\_ bash

说明是init的子进程

 \_ bash说明是另外一个进程的子进程

注意前面是一个空格

  \_ bash 说明是一个进程的子进程的子进程

聪明的你一定总结出来,前面的空格数说明了,子进程的层数。

或者你先用

echo $$

得到子进程号码,然后用

ps auxf

肉眼查看

版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.

    分享到:

Leave a Reply

Your email address will not be published. Required fields are marked *