如何暂时退出Vim并返回

我如何退出Vim,而不是:q,然后返回继续编辑?

175559 次浏览

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

:! <command>

:! ls

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

输入fg返回。注意,Vim在编辑时创建一个交换文件,挂起Vim不会删除该文件(毕竟你并没有退出Vim)。在哑终端上,这个方法对于使用6的编辑-编译-编辑循环来说是相当标准的。我刚刚发现,对我来说,gVim最小化键入Z

假设终端Vim是*nix类型:

暂停运行Vim

__abc0 + __abc1

将暂停进程并返回到您的shell

fg

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

启动一个新的shell

使用以下命令启动子shell:

:sh

(由)

:set shell?

:!bash

紧随其后的是:

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

杀死外壳并返回Vim。

有几种方法可以退出Vim,并且当您返回时一切都是一样的。在Vim本身中有非常好的文档解释了实现这一点的各种方法。您可以在vim中使用以下命令来访问相关的帮助页面

为了给你一个简单的总结,这里有不同的退出和返回的方法,而你的会话完好无损:

  1. 暂停和恢复——你实际上不会退出Vim;您只需将会话隐藏在后台,直到您需要它。如果您重置计算机或向Vim发出kill命令,您将失去会话。当您想暂时切换到另一个任务时,这是很好的,但如果是这种情况,那么您可能想要考虑使用GNU Screen utility代替。

  2. 会话——这是在Vim实例之间保存会话的真正方法。即使您真的退出了Vim,当您返回时,您的会话仍然存在。这可能就是你要找的。

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

你也可以通过:sus进入shell,然后通过fg返回。

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

我的回答几乎是我的日常工作。

为了扩展user Zen的答案,你可以在你的~/.vimrc文件中添加下面的行来允许在Bash和Vim之间快速切换:

noremap <C-d> :sh<cr>

只要输入fg,然后回到你最近暂停的程序。

如果你正在使用Neovim,你可以做以下事情:

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

如果你不介意用一下鼠标:

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

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