I don't use a dedicated terminal multiplexer. Instead, I either just use my tiling window manager (currently i3) or I use Neovim. This post will try to guide you through how I use Neovim for this purpose.
To open a terminal in the current window, do
:term. To open a new split with a terminal in it, first make the split with
:sp for a horizontal split or
:vs for a vertical split, then run
:term in that window.
Interacting with the terminal is very Vim-like. Using
a anywhere puts you into "Terminal Insert Mode", which lets you type into the shell prompt and stuff. All shell/Readline bindings also work in this mode. The default binding to exit Terminal Insert Mode is
<C-\><C-n>, however, that's kinda dumb. I'd highly recommend remapping this. You can remap it to
<Esc> if you want, but since I have Readline's vi mode enabled, and I'm also not a huge fan of pressing escape anyways (yes I know I could just remap it, but I already have a system that works for me and also I'm lazy), I use
tno <M-j><M-k< <C-\><C-n> to remap it to Alt-jk. Since I already use
jk to exit insert mode, this binding works quite well. However, I rarely actually need to use it! More on that later.
In normal mode in a terminal window, all the basics are there. Yanking, putting, movement/scrolling, etc. Since Neovim handles scrolling on its own, my terminal emulator doesn't natively scroll. If I need that functionality, I just use
less or Neovim.
Moving between splits is quite easy! By default,
<C-w>, followed by one of the directional keys (
hjkl) in normal mode changes the focused window. Using capital directional keys (
HJKL) will move the window in the specified direction. I actually also have a custom mapping for changing window focus: I use Alt+[hjkl] to switch window focus. What's more, this binding works both in normal mode and in terminal insert mode! Using it always kicks you back out to normal mode, but I'm okay with that. That's why I rarely ever actually quit out of terminal insert mode directly: I just change window focus from within terminal insert mode.
Finally, utilizing terminal buffers. I can control which terminal(s) are visible at any given time by pressing
<Leader>b (my leader key is space), and then selecting the buffer. This is done with the very simple mapping
nno <Leader>b :ls<CR>:b Deleting terminal buffers can be done by simply quitting out of them with
:q or by deleting the buffer directly using
And that's basically it! Neovim is completely usable as a fully functional terminal multiplexer. Of course, try messing around with your configuration and read the Neovim documentation if you want to try this yourself. You'll probably want a configuration that's different than mine, so have fun experimenting!