当我在vi
或vim
编辑文件时,我经常会编辑该文件,然后我需要打开一个shell来执行shell命令。所以,我通过:sh
进入shell。
这让我想到了shell。现在,当我想要返回我正在编辑的文件时,我会经常control + D
来返回该文件。这很好用。我按照说明here。
我在远程AWS机器上做了很多工作,我是ssh
- d。并且,control+D
是退出这些机器的一种方法。不幸的是,当ssh-d进入这些机器时,有时我不知道我是否在vi/vim
中打开了文件,当我control + D
返回该文件时,它会退出我的{{1}完全会话。
有没有办法
答案 0 :(得分:4)
看起来你遇到的问题并不是要弄清楚vi是否正在运行,而是如何使用“作业控制”在父shell和vi之间跳转(grep用于bash或sh man中的作业控制页)。
使用ctrl-z到背景vi并使用fg
继续。这适用于所有POSIX派生的shell,它适用于ssh。
这比使用:sh
和ctrl-d更受欢迎,因为你避免了你遇到的问题,你得到的是你在启动vi时使用的shell,并且你运行的shell少一个(这通常不是性能问题,但是如果你运行了很多shell,那么在需要的时候更容易查看它们的PID。
:sh
可能还有其他原因,但我唯一知道的是在vi会话中获取一个shell,该shell不是从shell开始的。
话虽如此,vi -r
(没有args)打印一个交换文件列表,其中包含在vi中打开的文件集。像vi -r |& grep -B 3 'still running'
这样的命令非常有用。
答案 1 :(得分:0)
您可以使用verb(X)
将为您提供目录中打开的所有常规文件
如需更多过滤,您也可以按-u指定用户。