I use tmux (with zsh, if that helps). I have a pretty good setup, but often I find myself running a program with a lot of output, and then entering copy mode and reverse searching for the line I typed into the shell to get to the front of the output. I do this in preference to using less due to the color output, and the fact that sometimes I do want to copy some text.
If I'm running a command that I already know will produce a lot of output, I'd like a way to run it and end up in copy mode at the start of the output, without having to type the command twice. This could take the form of either a way to run a command and drop into copy mode before the output, so the screen doesn't scroll, or a way to enter copy mode and immediately reverse search for the last shell history item. From the tmux docs I can see how to bind keys in copy mode, but there's no documentation on the available functions (i.e., could one bind a key to 'search-reverse "foo"').
less -R
preserves the coloring, but usually the command producing the output must be forced to color its output when connected to a pipe, e.g.ls --color=yes | less -R