如何在Vim窗口中打开Shell?


110

我可以在Vim中使用:shell命令打开外壳程序,但是我无法编辑文件,并且同时使用外壳程序。

有没有办法在许多Windows(或选项卡)中拆分Vim,并在其中一个窗口中打开外壳?


1
曾经有一个用于vim的shell补丁,但是它不再可以编译afaik。最接近真实外壳的地方是使用screen或tmux。这是我在vim中最想念的事情。
兰迪·莫里斯

Answers:


84

Neovim和Vim 8.2通过:ter[minal]命令。

有关terminal-window详细信息,请参见文档。


5
对于vim> = 8.0,这应该是公认的解决方案。
amath

3
如何垂直拆分终端?
Kiran Kumar Kotari

2
@KiranKumarKotari尝试vsplit term://bash使用Neovim。
普拉特

4
对于vim 8.0或更高版本,terminal命令将拆分窗口,并在窗口状态栏上使用特殊颜色显示命令外壳。光滑
NoelProf

@KiranKumarKotari vert [ical] ter [
minal

46

好吧,这取决于您的操作系统-实际上我没有在MS Windows上进行过测试-但是Conque是目前最好的插件之一。

实际上,它可以更好,但是可以。


4
如果您使用Vundle来管理插件,则可以将Bundle'jewes / Conque-Shell'添加到您的.vimrc文件中,然后运行:BundleInstall进行安装。
Mingjiang Shi

需要注意的一件事:vi的+ python或+ python3要求在某些工作环境中可能是杀手er。
cfi

这是更新的URL(带有屏幕截图):github.com/wkentaro/conque.vim
Walty Yeung,

18

:vsp:sp-将vim分成两个实例,但不能仅在其中一个中使用:shell。

为什么不显示终端的另一个标签而不是vim的另一个标签呢?如果您喜欢这个想法,可以尝试一下:Ctrl-shift-t.并使用Ctrl - pageup和在它们之间移动Ctrl - pagedown

如果只需要几个shell命令,则可以使用以下命令在vim中创建任何shell命令: !

例如:!./a.out


1
要运行当前打开的可执行文件,可以使用如下所示的vim路径魔术::!./%
cprn

为什么不显示终端的另一个选项卡 -并非每个人都在GUI上方的终端仿真器中使用vim ...从Ctrl-我假设您的答案都假设使用gnome-terminal或类似的仿真器。
törzsmókus

8

您可以使用tmuxscreen(第二个仅能进行水平分割而无需补丁)来分割终端。但是我不知道在两个窗格中都包含一个Vim实例的方法。


4
如果您是从git构建的,则屏幕可以进行垂直分割。
兰迪·莫里斯

8

如果您还没有找到答案,可以使用屏幕惊人的插件

Conque也很出色,但是我发现屏幕更加实用(例如,它不会“乱扔”您的缓冲区,您可以在缓冲区中编辑完命令后才发送真正想要的命令)


6

我猜这是一个相当老的问题,但是现在是2017年。我们有neovim,它是vim的一个分支,增加了终端支持。

因此,调用:term将打开一个终端窗口。与使用tmux(终端多路复用器)相反,此解决方案的优点在于您将拥有与vim设置相同的窗口绑定。neovim与vim兼容,因此您基本上可以复制并粘贴您的文件.vimrc,并且可以正常工作。

更多的优点是您可以在打开的终端上切换到普通模式,并且可以进行基本的复制和编辑。我猜它对git commit也非常有用,因为您缓冲区中的所有内容都可以自动完成。

我将更新此答案,因为vim也计划在vim 8.1中释放终端支持。您可以在此处关注进度:https : //groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

一旦发布,我相信这是比使用tmux更优越的设置。


6
我认为它是在Vim 8.0中发布的
LangeHaare


1

并非绝对是您要的内容,但是您的插件vim-notebook可能会让您感兴趣,该插件使用户可以保持后台进程有效,并使其评估当前文档的一部分(并将输出写入文档)。它旨在用于包含要评估的代码段的笔记本式文档。


0

您可能需要打开一个“屏幕”程序,拆分屏幕,在一个屏幕上打开shell,在另一个屏幕上打开vim。为我工作。


因为没有解释,所以取消了-1。此外,我测试了vim屏幕插件解决方案,它与mrcybul的解决方案没有什么不同。@mrcybul:试图提供帮助的坦克。为避免被低估,请仔细阅读其他答案,并仅在认为新的答案时才添加自己的答案。还包括为什么您的解决方案在某些情况下可能会更好的原因。
Titou

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.