No, this is not possible due to the way tmate (and similar programs, such as GNU Screen) work.
All tmate I/O goes through a pseudo-tty, or "pty." This has two sides to it, which I will call the user side and process side.
* The process side has three data streams (sequences of bytes): it sends data to the stdin
of the process and reads data from the stdout
and stderr
of the process.
* The user side has two data streams: it reads input from the user (e.g. what he types), which is then sent to the process side stdin
stream, and writes data to the user, which is a mix of everything read from the process side stdout
and stderr
.
What tmate does is add an extra layer in front of the pty which takes all bytes output from the user side of the pty and sends a copy of each byte to each tmate client, and reads all input from all the clients and sends it, intermixed, to the pty.
From this you can see that on the process side of the pty the process reading from stdin (bash
, vim
, or whatever) has no way of knowing which client sent any particular byte, or even that there are multiple clients (or any clients at all). Thus, there is no way for that process, which is generating the "cursor" for that session, to have multiple cursors.
If you want users to be issuing commands separately, they need to be sending them to separate shell processes, which means separate tmate sessions.