我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。

我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。


当前回答

最终,一个原生的:terminal命令于2017年添加到vim中。

下面是:terminal自述的节选:

此特性用于在Vim窗口中运行终端模拟器。一个 作业可以连接到终端模拟器启动。例如, 运行一个shell: :任期bash 或者运行build命令: :term make myprogram 作业从Vim异步运行,窗口将更新为 在另一个窗口中编辑时显示作业的输出。

其他回答

更新答案(11年后…):

如果您选择使用tmux解决方案,我建议使用tmux而不是下面原始答案中建议的screen。 Vim 8.1现在有一个内置的终端,可以用:term命令打开。这提供了与其余Vim特性更完整的集成。


我肯定会推荐这样的检查。Vim是一个文本编辑器,而不是一个shell。

我会使用Ctrl+AS来水平分割当前窗口,或者在Ubuntu的屏幕和其他补丁版本中,你可以使用Ctrl+A|(管道)来垂直分割。然后使用Ctrl+ATab(或在某些系统上等价地使用Ctrl+ACtrl+I,这可能更容易键入)在窗口之间切换。还有其他命令可以更改窗口的大小和排列。

或者一种不太高级的使用屏幕的方法是打开多个全屏窗口并在它们之间切换。这是我通常做的,我只是偶尔使用分屏功能。

如果你不熟悉GNU屏幕生存指南问题的使用,它有很多好的提示。

我知道我没有直接回答这个问题,但我认为这是 好方法。没有人提到tmux(或者至少没有作为一个 独立的回答)。Tmux是一种类似于屏幕的终端多路复用器。大多数 两种多路复用器都可以制作东西,但我认为这样更容易 配置。此外,tmux现在的开发比 屏幕上有相当大的生态系统围绕着它,比如有帮助的工具 配置,ecc。

同样对于vim,还有另一个插件:ViMUX,它帮助很大 两个工具之间的交互。你可以调用命令:

:call VimuxRunCommand(“ls”)

该命令在当前窗格vim下面创建一个小的水平分割 是在。

方法时,它还可以让您从提示符运行 整个命令:

<领袖> vp: VimuxPromptCommand < CR >

这还不够,至少有6个“特定平台的插件”:

Vim-vroom:用于rspec、cucumber和测试/单元的流道;通过g:vroom_use_vimux支持Vimux Vimux-ruby-test:用于轻松运行ruby测试的一组命令 Vimux - Cucumber:通过Vimux运行Cucumber Features vim-turbux:使用tmux进行Turbo Ruby测试 vimux- pytils: vimux的一组函数,允许在ipython中运行代码块 vimux-nose-test:在vimux中运行鼻子测试

这里有一个很好的“用例”:使用Vimux和Turbux与Spork和Guard进行随需测试

我不确定你到底想要实现什么(我从未使用过Emacs),但你可以在Vim中通过键入以下命令来运行命令:

:! somecommand [ENTER]

如果你想输入几个命令,或者在shell中玩一会儿,你总是可以使用:

:! bash (or your favourite shell) [ENTER]

一旦命令或shell终止,您将得到按Enter返回编辑器窗口的选项

Vim是有意轻量级的,并且缺乏执行非编辑类型事情的能力,就像在Vim窗格/选项卡中运行一个完整的shell一样,但正如上面提到的,有第三方插件,如Vim -shell,允许您执行这类事情。

通常情况下,如果我想在Vim和shell (Bash)之间切换,我只需按CTRL+Z暂停Vim进程,在我的shell中玩,然后当我想返回Vim时键入'fg' -保持我的编辑器和shell良好且独立。

假设你的vim版本首先支持+term命令,将shell设置为vim在一个命令中使用(例如set=/usr/bin/zsh),然后运行命令+term(即bo 15vs +term)。你可能需要对你的Windows做一些额外的操作(例如删除一个并旋转),但你会有你的终端。

我解决这个问题的方法是:

用Ctrl + Z暂停Vim, 在终点站玩, 然后只需输入命令fg,就可以返回到您离开Vim时的位置。