如何暂时退出 Vim 并返回

Posted

技术标签:

【中文标题】如何暂时退出 Vim 并返回【英文标题】:How to temporarily exit Vim and go back 【发布时间】:2010-12-25 03:40:25 【问题描述】:

我怎样才能退出 Vim,而不是 :q,然后返回继续编辑?

【问题讨论】:

【参考方案1】:

假设终端 Vim 是 *nix 风格的:

暂停正在运行的 Vim

Ctrl + Z

将暂停进程并返回您的 shell

fg

将恢复(带至foreground)您暂停的 Vim。

启动一个新的shell

使用以下命令启动子shell:

:sh

(根据配置)

:set shell?

:!bash

接着是:

Ctrl+D(或exit,但为什么要输入这么多?)

杀死shell并返回Vim。

【讨论】:

ps 查看前台进程unix.stackexchange.com/questions/6115/… 如果我想在编辑文件的同时继续运行我的服务器怎么办。例如,假设我做nodemon app.js(nodemon 为您刷新文件编辑服务器)然后我想返回我的 vim 编辑。如果没有两个单独的终端窗口,我可以这样做吗? jobs 以(对我而言)更易读的标题访问前台进程。然后例如fg %2 选择第二个。 如果这对您不起作用并且control-z 充当“撤消”功能,请检查您的vimrc 以查看behave mswin 是否存在。如果将其删除,control-z 将起作用 在windows中输入exit可以回到vim【参考方案2】:

您可以使用 :sh 退出到您的默认 shell,然后在 shell 提示符下输入 $ exit 将返回到 Vim。

【讨论】:

我希望我能更努力地投票。这正是 :shell 存在的原因。 公平地说,有时您想要相同的环境,而不是子shell环境。因此,如果您正在寻找完全退出 Vim 时对环境变量的更改,您将需要 CTRL-z/:sus。 可以在调用$ exit之前使用$ ps来查找我们是否在vim子shell中,以避免意外关闭终端。找到了这个here(网站上提到的提示符我没试过)。【参考方案3】:

您可以通过以下方式临时切换到 shell 模式:

:! <command>

比如

:! ls

【讨论】:

【参考方案4】:

您也可以通过 :sus 执行此操作,以通过 fg 进入 shell 并返回。

如果你经常需要在 shell 和 vim 之间来回切换,可能你真正想要的是在 shell 中只有一个 vim 实例,并用它来打开工作区中的任何文件。如果是这样,请检查this 问题。正确设置后,您可以 :susC-z 返回 shell,然后只需 vv &lt;newfile&gt; 即可返回 vim。

而我的answer 几乎是我的日常。

【讨论】:

【参考方案5】:

如果你在 Unix 系统上,Ctrl + Z 会挂起 Vim 并给你一个 shell。

输入fg 返回。请注意,Vim 在编辑时会创建一个交换文件,并且暂停 Vim 不会删除该文件(毕竟你并没有退出 Vim)。在哑终端上,这种方法对于使用vi 的编辑-编译-编辑循环来说是相当标准的。我刚刚发现,对我来说,gVim 可以最大限度地减少键入 Z

【讨论】:

【参考方案6】:

如果您使用的是Neovim,您可以执行以下操作:

:terminal 命令打开一个终端窗口。 做你的终端工作 输入exit 杀死终端进程 按任意键返回 Neovim

【讨论】:

【参考方案7】:

有几种方法可以退出 Vim 并在返回时保持一切不变。 Vim 本身有很好的文档解释了可以完成的各种方法。您可以在 vim 中使用以下命令访问相关帮助页面::help usr_21

为了给你一个简短的总结,以下是在你的会话完好无损的情况下退出和返回的不同方法:

    暂停和恢复 - 你实际上并没有因此退出 Vim;您只需将会话隐藏在后台,直到您需要它。如果您重置计算机或向 Vim 发出终止命令,您将丢失会话。当您想暂时切换到另一个任务时,这很有用,但如果是这种情况,那么您可能需要考虑改用 GNU Screen utility。

    Sessions - 这是在 Vim 实例之间保存会话的真正方法。即使你真的退出了 Vim,当你回来时,你的会话也会在那里。这可能就是您要找的。​​p>

【讨论】:

【参考方案8】:

要扩展 user Zen's answer,您可以在 ~/.vimrc 文件中添加以下行,以便在 Bash 和 Vim 之间快速切换:

noremap <C-d> :sh<cr>

【讨论】:

五年后我只想提一下,使用 C-d 可能是个坏建议,因为它会覆盖 Vim 的默认行为。 ctrl-d scoll 窗口默认朝向缓冲区。见vimdoc.sourceforge.net/htmldoc/scroll.html#CTRL-D【参考方案9】:

只需输入fg 并返回您最近暂停的程序。

【讨论】:

【参考方案10】:

如果您不介意使用鼠标:

启动终端, 选择一个文件, 选择打开标签

这会在终端上创建一个新选项卡,您可以在该选项卡上运行 Vim。现在使用鼠标移入/移出终端。我更喜欢这个,而不是总是必须输入(:shell 并退出)。

【讨论】:

以上是关于如何暂时退出 Vim 并返回的主要内容,如果未能解决你的问题,请参考以下文章

我无法退出Vim,我点击逃跑并尝试:q:x:qx [复制]

vim - 基本使用

5.1 Vim 常用操作

vi vim编辑器

如何防止主机退出并返回退出码?

vim 退出命令(保存放弃保存)