Want more egghead?

This lesson is for members. Join us? Get access to all 3,000+ tutorials + a community with expert developers around the world.

Unlock This Lesson

Already subscribed? Sign In

Autoplay

    Copy and paste text from a tmux session

    Bonnie EisenmanBonnie Eisenman

    One non-obvious, but extremely useful, feature in tmux is copy-pasting text between panes. This also allows you to scroll back in a tmux sessoin. We'll cover how to use copy and paste in tmux using C-b and C-b , for both emacs- and vim-style keybindings.

    tmuxtmux
    Code

    Code

    Become a Member to view code

    You must be a Member to view code

    Access all courses and lessons, track your progress, gain confidence and expertise.

    Become a Member
    and unlock code for this lesson
    Transcript

    Transcript

    00:00 You may have noticed while using tmux that your default method of scrolling doesn't work. In order to scroll back, we're going to type Ctrl-a and the left bracket key. Remember that I've remapped my prefix key to Ctrl-a. If you haven't done so, you'll still want to use Ctrl-b.

    00:15 You'll see here that this adds this gold-colored little bit of information display to the top which lets us know that we're in copy mode. Now, if I use my arrow keys, I can scroll back up and read the previous output from within this tmux pane. To leave copy mode, you press q, no prefix key. That will bring you right back to your current prompt.

    00:37 If you're on OS X, your default copy and paste should work. For example, if I highlight Vanilla JS here, push Command-C, and type Ctrl-a and the right arrow, I should be able to paste that back in with Command-V in my other pane.

    00:53 However, especially if you're working on a remote machine or something that's configured a little bit differently, you want to be able to use tmux's native copy and paste capabilities. There are two different sets of key bindings for using copy and paste in tmux. There's Emacs-style key bindings and Vim-style key bindings.

    01:09 To start with, we'll look at the Emacs key bindings. I'm going to type the prefix key Ctrl-a and colon, which puts me into command mode. Then I'm going to type set-window-option mode-keys emacs. I'm going to hit Enter.

    01:26 In order to copy paste text, we start by entering copy mode with Ctrl-a and the left square bracket. Then we can use our arrow keys to navigate to something that we want to copy. We set our mark by typing Ctrl-Space. Then I can use my arrow keys to select which bit of text I want to copy. To copy it, I'm going to type Ctrl-w.

    01:51 Depending on your system, this might be Alt-w or Option-w. It depends on your Emacs configuration. You'll notice that this takes me out of copy mode and puts me back at the prompt. Now, if I type the prefix key and the right bracket, you can see that it copied the text I had selected.

    02:11 Next, let's look at copy and paste using Vim key bindings. I'm going to type the prefix key and colon to get into command mode. Then I'm going to type set-window-option mode-keys. Now I'm going to set it to vi instead of Emacs. As before, I enter copy mode with the prefix key and the left bracket. I can navigate around with my arrow keys. I can also navigate with Vim key bindings.

    02:38 To set my mark for where I want to start copying, I press Space. I used standard Vim navigation to select where I want to copy. Let's say I want to copy to there. In order to actually execute the copy, I press Enter to select the copied region. This returns me back to the prompt. Now, if I type the prefix key and the right square bracket, you can see it copied it to my prompt.

    03:03 Remember also that you can use your tmux.conf file to change this default behavior. You can set it up to use Emacs- or Vim-style bindings by default, whichever is more comfortable for you.

    Discuss

    Discuss