如何暂时退出Vim并返回

365

我该如何退出Vim但不是使用 :q 命令,然后再回去继续编辑?

10个回答

673

假设你在*nix操作系统上使用终端版的Vim:

如何挂起正在运行的Vim

Ctrl + Z

可以将进程挂起并返回到你的shell中

fg

这将恢复(将挂起的Vim带回到前台),

启动一个新的shell

使用以下命令启动子Shell:

:sh

(按照配置)

:set shell?

或者

:!bash

接着按:

Ctrl+D (或者exit,但为什么要打那么多字呢?)

以杀死shell并返回Vim。


5
使用 ps 命令可以查看前台进程。http://unix.stackexchange.com/questions/6115/viewing-foreground-process-using-ps - Vlad Vinnikov
1
如果我想在编辑文件时继续运行服务器怎么办呢?例如,我执行 nodemon app.js(nodemon 可以在文件编辑时刷新服务器),然后我想回到我的 vim 编辑中。我能在不打开两个分离的终端窗口的情况下做到这一点吗? - Costa Michailidis
5
或者使用“jobs”命令访问前台进程,并获得一个(对于我来说)更易读的标题。然后,例如,使用“fg %2”选择第二个前台进程。 - isomorphismes
如果这对你不起作用,而 control-z 的作用是“撤消”,请检查你的 vimrc 文件是否存在 behave mswin。如果有,请将其删除,然后 control-z 将会起作用。 - schuess
3
如果您在Windows中输入“exit”,则可以返回到Vim。 - JonnyRaa
显示剩余5条评论

122

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


2
我希望我能更加强烈地点赞。这正是为什么存在:shell的原因。 - Randy Morris
9
公平地说,有时你需要相同的环境,而不是子shell环境。因此,如果你希望在完全退出Vim时更改环境变量,你需要使用CTRL-z/:sus命令。 - Tango Bravo
可以使用 $ ps 命令来查找是否在 vim 子 shell 中,然后再调用 $ exit 命令以避免意外关闭终端。这个方法来源于 这里(我没有尝试网站上提到的提示指示器)。 - Daniel

38

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

:! <command>

例如

:! ls

24
如果您正在使用Unix系统,Ctrl + Z将暂停Vim并为您提供shell。
键入fg以返回。请注意,Vim在编辑时创建交换文件,暂停Vim不会删除该文件(毕竟您没有退出Vim)。在愚笨终端上,使用vi进行编辑-编译-编辑循环的方法非常标准。我刚刚发现对我来说,gVim在键入Z后最小化。

23

你还可以使用 :sus 进入 shell,然后使用 fg 返回。

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

而我的答案几乎是我每天的日常。


10

如果你正在使用Neovim,可以按照以下步骤操作:

  • 输入:terminal命令打开终端窗口。
  • 进行你需要的终端操作。
  • 输入exit关闭终端进程。
  • 按下任意键返回到Neovim。

6
只需输入fg即可返回到您最近暂停的程序。

5
为了扩展user Zen的答案,你可以在你的~/.vimrc文件中添加以下行,以便快速在Bash和Vim之间切换:
noremap <C-d> :sh<cr>

五年后,我只想提一下使用C-d可能是个坏建议,因为它会覆盖Vim的默认行为。默认情况下,Ctrl-d向缓冲区内部滚动窗口。请参阅http://vimdoc.sourceforge.net/htmldoc/scroll.html#CTRL-D - xaa

5
有几种方法可以退出 Vim 并在返回时保持一切不变。Vim 本身有非常好的文档,解释了可以完成此操作的各种方式。您可以使用以下命令在 vim 中访问相关帮助页面::help usr_21 为了给您一个简要概述,这里是不同的退出和返回方法,使您的会话保持完好:
  1. 挂起和恢复 - 您并不实际退出 Vim;您只需将会话隐藏在后台,直到需要它。如果您重置计算机或向 Vim 发出 kill 命令,您将失去会话。这对于您想暂时切换到另一个任务很有用,但如果是这种情况,那么您可能需要考虑使用 GNU Screen 实用程序

  2. 会话 - 这是在 Vim 实例之间保存会话的真正方法。即使您真正退出 Vim,在您返回时,您的会话也将存在。这可能是您正在寻找的。


0

如果您不介意稍微用一下鼠标:

  • 启动终端,
  • 选择一个文件,
  • 选择打开选项卡

这将在终端上创建一个新的选项卡,您可以在其中运行Vim。现在使用鼠标在终端之间切换。我更喜欢这种方法,而不是总是需要输入(:shell和退出)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接