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

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


当前回答

自2017年以来,在vim中使用终端打开一个新标签是可能的,正如@fjardon所说:

只需输入::terminal。默认情况下,它将在当前选项卡上方打开一个选项卡。

如果你想在其他地方打开它,你可以尝试以下选项:

:在终端下方:打开当前选项卡下方的终端。 :下方垂直端子:始终垂直向右打开端子。

你可以玩这些,直到你找到你喜欢的。在这之后,你可以在你的.vimrc配置文件中设置一个映射,对我来说,我使用:

nmap <leader>tt :below vertical terminal<CR>

这样我可以输入<空格>tt(空格我的领导键)来快速打开它。

作为旁注:

你可以切换你的选项卡(终端和其他缓冲区)与Ctrl+W Ctrl+W。 如果你想用Ctrl+W N复制你的命令,用i或a进入普通终端模式,你可以在终端中进入可编辑模式。

干杯!

其他回答

Vim 8.1的主要新特性是支持在Vim窗口中运行终端。

:term将在Vim内部的另一个窗口中打开终端。

2011年8月过时

看看征服壳(也在GitHub上)。允许您在vim中运行任何交互程序,而不仅仅是一个shell。

你可能想看一下:sh命令(参见:help sh in Vim)。

各种命令

如果你对快速回答感兴趣,这里是::vert术语。它会垂直分割你的屏幕并打开终端。

有人已经建议https://github.com/Shougo/vimshell.vim,但他们没有提到原因。因此,当我离开这个问题时,我浪费了很多时间去尝试其他(排名更高的)选项。

Shougo/vimshell就是答案。原因如下:

除了作为终端模拟器外,VimShell还允许您以正常和可视模式在终端输出中导航。因此,如果您运行的命令导致您只想使用键盘复制和粘贴输出…VimShell涵盖了这一点。

上面提到的其他选项,包括NeoVim中的:terminal命令,都不能做到这一点。截至2017年2月18日,Neovim的终端已经接近,但至少在以下方面还不够:

将光标移动到缓冲区的末尾,而不是像VimShell那样将光标保持在最后一个位置。太浪费时间了。 不支持modifiable = 1参见Github上的讨论,所以像vim-easymotion这样的有用插件不能使用。 不像Vimshell那样支持显示行号。

不要在其他选择上浪费时间,包括Neovim的:终端。用VimShell吧。