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

这使我无所适从。现在,当我想返回到我正在编辑的文件时,我将经常执行control + D以返回文件。这很好。我遵循了here的指示。

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

有没有办法

  • 1)知道我当前在vi或
  • 中打开了一个文件
  • 2)退出shell并安全地返回我的文件,而不会冒意外关闭ssh session 的风险?
  • 请您参考如下方法:

    看来您遇到的问题不是想弄清楚vi是否正在运行,而是要如何使用“作业控制”(bash或sh手册页中的grep用于作业控制)在父shell和vi之间跳转。

    使用ctrl-z作为背景vi,并使用fg恢复。这适用于所有POSIX派生的shell,并且可以在ssh上使用。

    与避免使用:sh和ctrl-d相比,这是首选方法,因为这样可以避免遇到的问题,在启动vi时会得到与您正在使用的shell相同的shell,并且运行的shell少一些(这通常不是性能问题,但如果有很多运行的shell,则在需要时更容易查看它们的PID)。
    :sh可能还有其他原因,但是我所知道的唯一原因是在vi session 中获取了一个不是从shell开始的shell。

    话虽如此,vi -r(不带参数)会打印一个交换文件列表,其中包含在vi中打开的文件集。像vi -r |& grep -B 3 'still running'这样的命令很有用。


    评论关闭
    IT序号网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!