How do I scroll through a terminal using Vim 8.1's new terminal/termpack support?

Vim

Vim Problem Overview


I love the new terminal support that Vim 8.1 offers and I like that up/down are mapped to the terminal, so that you can select prior commands. How can I scroll up and down the terminal however? Currently, in my GDB program output window I see characters like this:

^[[A^[[A^[[A^[[A^[[B^[[B^[[B^[[D^[[D^[[

And in the terminal window it just moves between prior commands.

Vim Solutions


Solution 1 - Vim

You have to switch to 'Terminal-Normal mode' with Ctrlw, N (that's Ctrl-w, capital N). Then you can use the usual Vim commands to move around, cut, copy and paste.

Once finished, press either i or a to resume using the terminal as before.

Solution 2 - Vim

I do this:

tnoremap <c-b> <c-\><c-n>

And then <C-b> whenever I need to scroll back up, using gg to go all the way up, then G to come back down, (or <C-F> for page by page). I press 'i' or 'a' from any page to enter commands in the shell. Simplicity itself.

Solution 3 - Vim

If you are using neovim, press Ctrl + \ followed by Ctrl + n to enter normal mode in a terminal.

The help (:help terminal-input) says the following: > In this mode all keys except <C-\><C-N> are sent to the underlying program. Use <C-\><C-N> to return to normal-mode. CTRL-\_CTRL-N

Also, if you do this often, I recommend mapping it to something more convenient, like a double tap of Escape:

tnoremap <Esc><Esc> <C-\><C-n>

(That way you can still use programs in the command line, that require escape to retain it's original functionality, since if you don't press anything else, it will just send a regular escape event after your defined timeout length.)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondromodelView Question on Stackoverflow
Solution 1 - VimleightskiView Answer on Stackoverflow
Solution 2 - VimM.S.View Answer on Stackoverflow
Solution 3 - VimIsti115View Answer on Stackoverflow