gpt4 book ai didi

bash - 如何知道在使用Shell时在vi中打开文件?

转载 作者:行者123 更新时间:2023-12-02 14:12:03 25 4
gpt4 key购买 nike

当我使用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'这样的命令很有用。

    关于bash - 如何知道在使用Shell时在vi中打开文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43836509/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com