gpt4 book ai didi

vim - 如何检查它是否仍处于 Vim shell 模式

转载 作者:行者123 更新时间:2023-12-04 18:48:33 25 4
gpt4 key购买 nike

在 vim 中,输入 :sh 将切换到 shell,然后 退出 可以退出shell并返回vim。是否有任何命令可以检查它是否处于 vim shell 模式?这样我就不会意外地 vim 再次打开同一个文件。我想避免以下情况:
vim myfile > :sh > exit > vim myfile//得到另一个 vim 实例正在编辑同一个文件的警告

这些是正常情况:vim myfile > :sh > exit//继续编辑vim myfile > :wq > vim myfile//继续编辑

最佳答案

除了@a3nm 的回答,你还能做的是

  • 使用 pstree -h : 它将输出当前分支高亮的进程树,您需要检查高亮中是否有vim。
  • 另一种可能是ps t :它将显示使用当前终端的所有进程,并应显示 vim在列表中,当你在里面时 :sh . ps -oargs t如果您想知道运行 vim 时使用的参数,可能会更有用。

  • 这些方法更可靠,因为 VIMRUNTIME , VIMMYVIMRC您可能会覆盖环境变量以进行一些自定义(顺便说一句,它们是由 vim 定义的,用于 vimscripts,而不是由 :sh 定义)。它们也适用于允许您运行子 shell 但不定义任何环境变量的其他进程。

    我还建议考虑使用 <C-z>在正常模式或 :suspend/ :stop在 Ex 中,因为这些使用 shell vim 是从启动而不是创建新的。此行为使您可以访问在运行 vim 之前键入的命令的历史记录,还使您能够编写更复杂和更耗时的 shell 配置,而无需每次都等待。

    如果您使用 <C-z>这两种方法仍然有效,但第一种方法不会突出显示 vim,因为它与 pstree 处于同一级别(具有相同的父级)本身,可能略低于或高于 pstree在图中。这也启用了第三种方法: jobs shell 内置。

    为了从 <C-z>恢复你应该使用 fg (zsh 和 bash 中的单个 % 也可以使用)比 exit 输入更少(但更多的是 <C-d> )。

    关于vim - 如何检查它是否仍处于 Vim shell 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9887569/

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