I can't get this to work. How can I search the buffer of a tmux shell?

  • 1
    What version of tmux (tmux -V)? I believe this was added in version 0.9. Jan 9, 2011 at 20:43
  • @Dennis it's 1.3-1
    – NES
    Jan 9, 2011 at 21:08
  • 1
    Finding the version with tmux -V works only in later versions. In Ubuntu/Debian you can do: dpkg -l | grep tmux
    – Niels Bom
    Oct 4, 2012 at 11:46
  • 1
    I don't know why, but these answers don't work for me whereas CTRL+B PgUp CTRL+B R my searchterm works
    – lucidbrot
    Nov 11, 2020 at 12:53

4 Answers 4


copy mode search

To search in the tmux history buffer for the current window, press Ctrl-b [ to enter copy mode.

If you're using emacs key bindings (the default), press Ctrl-s then type the string to search for and press Enter. Press n to search for the same string again. Press Shift-n for reverse search. Press Escape twice to exit copy mode. You can use Ctrl-r to search in the reverse direction. Note that since tmux is in control of the keyboard in copy mode, Ctrl-s works regardless of the stty ixon setting (which I like to have as stty -ixon to enable forward searches in Bash).

If you're using vi key bindings (Ctrl-b:set-window-option -g mode-keys vi), press / then type the string to search for and press Enter. Press n to search for the same string again. Press Shift-n for reverse search as in emacs mode. Press q twice to exit copy mode. You can use ? to search in the reverse direction.


If you want to switch to a window based on something displayed in it (this also includes window names and titles but not history), (starting with more than one window open) press Ctrl-b f then type the string to search for and press Enter. You will be switched to a window containing that text if it's found. If more than one window matches, you'll see a list to select from.

  • 3
    How can I set the binding style? (emacs vs vi)
    – Daniel Que
    Aug 12, 2014 at 22:39
  • 2
    @DanielQue: Take a look at the tmux man page and search for "mode-keys" and "status-keys". Those are sub-commands that allow you to set the binding style. Alternately, it might be simpler to set an environment variable (EDITOR or VISUAL) to the style you want before starting tmux. Aug 12, 2014 at 22:55
  • 8
    Thanks, I got it to work with set-window-option -g mode-keys vi in my .tmux.conf. But I was curious about the environment variable alternative and couldn't get it to work. Is it a shell environment variable, or a tmux environment variable that has to be set in the conf file?
    – Daniel Que
    Aug 12, 2014 at 23:38
  • 2
    @DanielQue: A shell environment variable. It will need to be exported or placed in tmux's envrionment like this: VISUAL=vi tmux Aug 13, 2014 at 4:54
  • 1
    Also note that there is no regex search yet, here is an open issue on it sourceforge.net/p/tmux/tickets/9 Oct 28, 2014 at 20:58

Enter copy mode and start searching in one go

bind-key / copy-mode \; send-key ?

allows you to do just:

 Ctrl + B /

and start typing the search term, which will search up (latest lines first).

Dump to a file and use vim

When things get more involved, I just want to use a proper editor: https://unix.stackexchange.com/questions/26548/write-all-tmux-scrollback-to-a-file

bind-key P 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer

Now P dumps the buffer to a file, and then I just:

vim /tmp/tmux

We can automate things even further by automatically opening vim as well as suggested by pkfm:

bind-key v 'capture-pane' \; \
  capture-pane -S - \; \
  save-buffer /tmp/tmux \; \
  delete-buffer \; \
  send-keys Escape 'ddivim /tmp/tmux' Enter

This supposes that your shell is in vi mode, so that:

  • Escape goes into normal mode
  • dd clears any existing command
  • i goes into insert mode
  • then we run vim /tmp/tmux

Tested in tmux 3.0.

  • How do I make this prompt for the filename (so I don't have to hardcode /tmp/tmux)? Oct 19, 2018 at 8:06
  • @PeeyushKushwaha sorry but my tmux fu is not that good, I'd have to google, let me know if you find it out. Oct 19, 2018 at 8:08
  • 1
    take it further and embed the vim command within the tmux binding and automate a backwards search from the bottom of the file for the last shell prompt to jump back to the last command: bind-key V 'capture-pane' \; capture-pane -S - \; save-buffer /tmp/tmux \; delete-buffer \; send-keys Escape 'ivim "+normal G" +"?^> " /tmp/tmux' Enter. here, PS1 is > . note the trailing space, as well as the i before vim to enter insert mode where the shell is using vi bindings. change according to your needs.
    – pkfm
    Sep 25, 2020 at 8:06
  • @pkfm good tip! Added! Sep 25, 2020 at 8:37
  • This bind-key / copy-mode \; send-key ? did not work for me. It did enter copy mode but did not start a search.
    – SFbay007
    Mar 1, 2021 at 13:24

You can use vim to view/edit/search/save the screen log, fold the log at each bash prompt:

tmux capture-pane -pS -1000000 |
  vim +":setl fen fdm=expr fde=getline(v:lnum)=~'^\\\\S\\+\\\\$\\\\s'?'>1':1"  -  

Adjust the regex according to your prompt, use four backslash for each backslash in regex.

Or put the vim function in ~/.vimrc:

command!           MoshFoldTmuxLog :setl fen fdm=expr
  \   fde=getline(v:lnum)=~'^\\S\\+\\$\\s'?'>1':1 

And in ~/.bashrc add date to the prompt, if you have lots of logs to search through. e.g

PS1='\u@\h:\w:\D{%F-%T}$?:\$ ' # user-host-pwd-date-time-errno 
alias tmux-log='tmux capture-pane -pS -1000000 | vi +MoshFoldTmuxLog -'         

Here is a solution I found.

You can modify the target path and filename as well:

# Save screen content to file
bind p command-prompt -p 'Save history to:' -I '~/tmux.history' 'capture-pane -S -32768 ; save-buffer %1 ; delete-buffer'

After reloading the tmux config file you can press prefix p in my case Ctrl+a p You can change bind p to your preferred key combination.

First mine was not working because I was overwriting bind p in another line so I just commented that out.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.