我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
我已经习惯了Emacs,但是我正在试用Vim,看看我更喜欢哪个。
我喜欢Emacs的一点是能够在Emacs内部运行终端。这在Vim内部可能吗?我知道您可以从Vim执行命令,但我希望能够在选项卡中运行终端。
当前回答
如果在您的Vim版本中启用,则可以使用:term命令启动终端。
终端窗口支持被添加到Vim 8。这是一个可选特性,可以在使用+终端特性编译Vim时启用。如果你的Vim版本有终端支持,:echo has('terminal')将输出"1"。
输入:term将使您进入终端作业模式,在此模式下您可以按预期使用终端。
在Terminal-Job模式下,按Ctrl- w N或Ctrl-\ Ctrl-N将模式切换到Terminal-Normal,这允许光标移动,命令运行类似于Vim的Normal模式。若要切换回终端作业模式,请按“i”。
其他回答提到了Neovim中类似的功能。
其他回答
更新答案(11年后…):
如果您选择使用tmux解决方案,我建议使用tmux而不是下面原始答案中建议的screen。 Vim 8.1现在有一个内置的终端,可以用:term命令打开。这提供了与其余Vim特性更完整的集成。
我肯定会推荐这样的检查。Vim是一个文本编辑器,而不是一个shell。
我会使用Ctrl+AS来水平分割当前窗口,或者在Ubuntu的屏幕和其他补丁版本中,你可以使用Ctrl+A|(管道)来垂直分割。然后使用Ctrl+ATab(或在某些系统上等价地使用Ctrl+ACtrl+I,这可能更容易键入)在窗口之间切换。还有其他命令可以更改窗口的大小和排列。
或者一种不太高级的使用屏幕的方法是打开多个全屏窗口并在它们之间切换。这是我通常做的,我只是偶尔使用分屏功能。
如果你不熟悉GNU屏幕生存指南问题的使用,它有很多好的提示。
我不确定你到底想要实现什么(我从未使用过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和终端时工作得更好的是Tmux(这是一种“在后台运行的软件”,类似于屏幕,尽管这个更适合分割和制表符)。
这篇文章将帮助你理解它们是如何一起工作的:“Tmux和Vim -更好的一起工作”。
通过这种方式,我们可以将Vim转换为强大的IDE
最终,一个原生的:terminal命令于2017年添加到vim中。
下面是:terminal自述的节选:
此特性用于在Vim窗口中运行终端模拟器。一个 作业可以连接到终端模拟器启动。例如, 运行一个shell: :任期bash 或者运行build命令: :term make myprogram 作业从Vim异步运行,窗口将更新为 在另一个窗口中编辑时显示作业的输出。
这个问题相当老了,但是对于那些发现它的人来说,有一个新的可能的解决方案:Neovim包含一个成熟的、一流的终端模拟器,它所做的正是ConqueTerm试图做的。只需运行:term <您的命令这里>。
<C-\><C-n>将退出术语模式返回正常模式。如果你像我一样,更喜欢escape仍然退出term模式,你可以把这个添加到你的nvimrc:
tnoremap <ESC><ESC> <C-\><C-N>
然后按ESC两次将退出终端模式回到正常模式,因此您可以操作仍在运行的命令写入的缓冲区。
不过请记住,由于nvim在我发布这个答案的时候正在进行大量的开发,可能会添加另一种退出终端模式的方法。当Ctrl+\Ctrl+n从几乎任何模式切换到正常模式时,我不期望这个答案会出错,但请注意,如果它不起作用,这个答案可能已经过时了。
https://github.com/neovim/neovim