如何知道在使用shell时何时在vi中打开文件?

时间:2017-05-07 20:43:23

标签: bash shell vim ssh vi

当我在vivim编辑文件时,我经常会编辑该文件,然后我需要打开一个shell来执行shell命令。所以,我通过:sh进入shell。

这让我想到了shell。现在,当我想要返回我正在编辑的文件时,我会经常control + D来返回该文件。这很好用。我按照说明here

我在远程AWS机器上做了很多工作,我是ssh - d。并且,control+D是退出这些机器的一种方法。不幸的是,当ssh-d进入这些机器时,有时我不知道我是否在vi/vim中打开了文件,当我control + D返回该文件时,它会退出我的{{1}完全会话。

有没有办法

  • 1)知道我目前在vi或
  • 中打开了一个文件
  • 2)退出shell并安全返回我的文件而不会有意外关闭我的ssh会话的风险?

2 个答案:

答案 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指定用户。