Saltycrane logo

SaltyCrane Blog

Notes on Python, Django, and web development on Ubuntu Linux

    

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 notes:

  • C-a S splits into two regions
  • C-a tab switches input focus to the next region
  • C-a X kills the current region
  • C-a :resize numlines resizes the current region to numlines lines.

Keyboard shortcuts (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 [ or C-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.

12 Comments — feed icon Comments feed for this post


#1 miroslav commented on 2008-11-26:

thank you


#2 Aleksandr commented on 2009-04-01:

Thank you very much!


#3 Eliot commented on 2009-05-18:

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 and 1 bash]

Joan's solution:

Use Cntrl+a a p and Cntrl+a a n to go to previous/next windows. For example, if you had 3 screens on inside other, then you would do Cntrl+a a a p etc.


#4 Kryksyh commented on 2010-02-01:

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@


#5 arekm commented on 2010-10-08:

@Kryksyh: unfortunately it uses single buffer then while we would have separate buffere for every screen window.


#6 alun commented on 2010-10-23:

great, thanks)


#7 Pooja commented on 2011-01-06:

Good useful info, thanks


#8 fedir rykhtik commented on 2011-01-19:

Thank a lot for the article :)

Apparently, it's possible to do vertical split to with C-a |


#9 ssx commented on 2011-05-15:

Thanks! I use screen all the time and that always annoyed me.


#10 Joseph McCullough commented on 2011-06-16:

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.


#11 Alex commented on 2011-08-29:

it's always nice to google "how to" and have a working result in first row. thanks


#12 Unni commented on 2012-01-24:

good one. I was searching for how to enable scroll in xterm with screen.

Post a comment

Required
Required, but not displayed
Optional

Format using Markdown. (No HTML.)
  • Code blocks: prefix each line by at least 4 spaces or 1 tab (and a blank line before and after)
  • Code span: surround with backticks
  • Blockquotes: prefix lines to be quoted with >
  • Links: <URL>
  • Links w/ description: [description](URL)
Created with Django | Hosted by Slicehost