如何在Vim窗口中打开Shell?

Mar*_*man 99 vim shell window

我可以在Vim中使用:shell命令打开shell,但是我无法编辑文件并同时使用shell.

有没有办法在许多Windows(或标签)中拆分Vim,并在其中一个中打开一个shell?

pra*_*ter 54

最近,但作为通过谷歌到达这里的人的一个有用的暗示.

Neovim和Vim 8现在通过:ter[minal]命令原生支持.

  • 也可以在vim 8中使用,命令完全相同. (8认同)
  • 对于vim> = 8.0,这应该是公认的解决方案。 (2认同)
  • 在vim 8.0或更高版本中,`terminal`命令会分割窗口,并在窗口状态栏上使用特殊颜色显示命令外壳。光滑 (2认同)

Zso*_*kai 46

嗯,这取决于你的操作系统 - 实际上我没有在MS Windows上测试它 - 但是Conque是那里最好的插件之一.

实际上,它可以更好,但有效.

  • 如果您使用Vundle来管理插件,您可以将Bundle'jewes/Conque-Shell'添加到.vimrc文件中,然后运行:BundleInstall来安装它. (4认同)

vla*_*adv 18

:vsp:sp- 将vim拆分为两个实例,但不能使用:shell中只有一个.

为什么不显示终端的另一个选项卡而不是vim的另一个选项卡.如果你喜欢这个主意,你可以尝试:Ctrl-shift-t.和它们之间有移动Ctrl - pageupCtrl - pagedown

如果你只想要几个shell命令,你可以在vim中使用任何shell命令 !

例如:!./a.out.

  • 要运行当前打开的可执行文件,您可以使用“vim”路径魔法,如下所示:“:!./%” (2认同)

Eel*_*vex 8

如果你还没有发现,你可以使用惊人的屏幕插件.

Conque也很特别,但我发现屏幕更实用(例如它不会"乱丢"你的缓冲区,你可以在缓冲区中编辑它们之后发送你真正想要的命令)


ZyX*_*ZyX 7

您可以使用tmuxscreen(第二个只能进行水平分割,没有补丁)来拆分终端.但我不知道在两个窗格中都有一个Vim实例的方法.

  • 如果你从git构建它,屏幕可以做垂直分割. (4认同)

chr*_*riz 6

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

所以调用:term会打开一个终端窗口.与使用tmux(终端多路复用器)相比,此解决方案的优点在于,您将拥有与vim设置相同的窗口绑定.neovim与vim兼容,所以你基本上可以复制和粘贴你的.vimrc,它只会工作.

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

我将更新这个答案,因为vim还计划发布终端支持,可能是在vim 8.1中.您可以按照以下步骤操作:https: //groups.google.com/forum/#!topic/vim_dev/Q9gUWGCeTXM

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

  • 它是在Vim 8.0中发布的 (5认同)