Vim has - or had, it's no longer supported - the "Conque" plugin to create a terminal inside Vim. I found it buggy and problematic.
The appearance of the NeoVim fork was a kick in the pants to the Vim project that's spurred development in both projects. NeoVim added a built-in terminal that was far better than Conque. Vim, as of version 8, has the same thing.
In Vim, just type :terminal
or simply :term
. It will create a split window with a terminal in it.
To do the same thing in NeoVim, start a new tab (Normal Mode :tabnew
and Enter) then in Normal Mode type :term
. I'm recommending a new tab because the NeoVim terminal startup behaviour is different than Vim, with the :term
command taking over your current buffer.
I'm occasionally finding that the terminal session doesn't read all the start-up commands I expect it to (sometimes some of my aliases or functions aren't defined), but for the most part it's great. It takes a bit of time to learn/remember that you need to type a
(or A
, i
, A
, or probably any command that puts you in Insert Mode) before you can type shell commands, and likewise you have to learn to hit <Esc>
to go back to Normal Mode to be able to change tabs again. But once you remember that, there are some really interesting side effects such as easy Normal Mode scroll-back, and all your standard Vim commands to search or yank text from your shell session.
There's one caveat: DON'T forget you're inside (Neo)Vim and try to edit a file with (Neo)Vim. It's NOT pretty. I kind of wonder why the NeoVim authors haven't addressed this, trapped the nvim
startup, and thrown it into a new tab or buffer of your current NeoVim session. Maybe that's harder than I think it is. Regardless, don't try it - you'll end up being forced to exit ugly.