How to scroll in GNU Screen
GNU Screen is great. But, after half a year of using it, I've only now figured out how to scroll into screen's buffer (courtesy of this tutorial). Normally, I just use SHIFT+PGUP to scroll up in urxvt's buffer. However, if I have two regions in screen, this doesn't work. To scroll in screen's buffer, I need to enter "copy mode". To do this, type C-a [
or C-a ESC
. (The latter option works great for me because I bound the prefix key to the backtick key instead of C-a
.) Once in "copy mode", I can scroll using the arrow keys or PGUP/PGDOWN keys. To exit "copy mode", I press ESC. Scrolling within screen's buffer instead of urxvt's also prevents me from losing my place in my scrollback buffer when I switch screen "windows" (terminal sessions).
Other useful commands¶
C-a S
splits into two regionsC-a tab
switches input focus to the next regionC-a X
kills the current regionC-a :resize numlines
resizes the current region to numlines lines.
Custom key bindings for scrolling (updated 2009-04-01)¶
If you don't want to hit C-a ESC PGUP
everytime to page up, you can create keyboard shortcuts. I use CTRL+K to scroll up one line and META+K to scroll up one page (I know these are kind of weird key combinations). To create these shortcuts, I put the following in my .screenrc
.
bindkey "^[k" eval "copy" "stuff ^b" # enter copy mode and move up one page bindkey "^k" eval "copy" "stuff k" # enter copy mode and move up one line bindkey -m "^[k" stuff ^b # move up one page bindkey -m "^k" stuff k # move up one line
Now, when I'm in screen and press M-k
, screen enters copy mode and scrolls up one page. Likewise, C-k
enters copy mode and scrolls up one line. As before, to exit copy mode, hit ESC
.
How to copy and paste in screen (added 2010-02-03)¶
Thanks to this GNU Screen cheat-sheet.
- Enter scrollback mode using
C-a [
orC-a ESC
- Press the space bar to begin selecting text.
- Move the cursor using h,j,k,l,C-b,C-f or arrow keys/PGUP/PGDOWN
- Hit the space bar again to copy the selected text.
- Hit
ESC
to exit scrollback mode. - Press
C-a ]
to paste.
How to open 2 terminals connected to the same session (Multi display mode) (updated 2012-04-05)¶
The -x option can be used to attach multiple terminals to the same screen session. Pretty cool! Open a terminal and create a screen session named "local"
$ screen -S local
Start a second terminal, then attach it to the existing session:
$ screen -x local
How to eliminate apparent delay when entering copy mode (updated 2012-04-05)¶
To get rid of the apparent delay when entering copy mode, I set msgminwait to 0 in my ~/.screenrc
msgminwait 0
My ~/.screenrc on github¶
Here is my ~/.screenrc on github.
See also¶
See also my post, How to start a long-running process in screen and detach from it and some "screen vs. tmux" links in the comments.
Comments
thank you
Thank you very much!
Here's a good tip I got from Joan via email. It explains how to use a screen session nested in another screen session.
Situation: I opened the screen in my local machine, and then I connected to a remote server and reattached a screen session. Do you know how can a switch to a
3 bash
,4 bash
, ... (blue) into the remote server? when I type: Cntrl+a a or Cntrl+a 1, 2, 3 and so on, only switches into the grey (local) screen. [0 bash
and1 bash
]
Joan's solution:
Use
Cntrl+a a p
andCntrl+a a n
to go to previous/next windows. For example, if you had 3 screens on inside other, then you would doCntrl+a a a p
etc.
The another way is to tell screen to use terminal emulator buffer. To do so one should place string like that in screenrc
$ cat ~/.screenrc: termcapinfo xterm|xterms|xs|rxvt ti@:te@
@Kryksyh: unfortunately it uses single buffer then while we would have separate buffere for every screen window.
great, thanks)
Good useful info, thanks
Thank a lot for the article :)
Apparently, it's possible to do vertical split to with C-a |
Thanks! I use screen all the time and that always annoyed me.
Thanks a lot! Just introduced myself to the joys of GNU screen, and this is something I couldn't figure out. Needed to check debugging output for a script and I couldn't read back!
Thanks again.
it's always nice to google "how to" and have a working result in first row. thanks
good one. I was searching for how to enable scroll in xterm with screen.
That crane looks delicious