I'm new to tmux, and split a window into 3 panes, left half(main pane), top-right quarter and bottom-right quarter. Is it possible that I use command to open an editable file in the left main pane, say vim myFile.py
, and myFile.py will open in another pane, say top-right pane, such that I can always edit file in the top-right pane and keep input commands int eh left main pane?
how to open file in another pane in Tmux
5.6k views Asked by Emerson Xu AtThere are 3 answers
TL;DR: you can use tmux
to open commands in panes other than the current pane, but dpk2442's solution using vim
's client/server features is probably cleaner.
One option is to set remain-on-exit
option on the top-right pane, then use the respawn-pane
command to start vim
in the pane.
Say the pane identifier of the top-right pane is 0:0.1
(session 0, window 0, pane 1; you'll need to adjust this for your setup). You can set the remain-on-exit
option using
tmux set-option -t 0:0 remain-on-exit on
(This sets the option for any pane in the window, not just one particular pane.)
Then, use
tmux respawn-command -k -t 0:0.1 vim myFile.py
to open vim
in the pane specified by the argument to the -t
option. -
k` ensures that any command already running in the pane is killed; you can omit it if you know that nothing is currently running in that pane.
Give the length of the command, you'll probably want to define a shell function to launch vim
in the desired pane:
start_vim () {
tmux respawn-command -k -t 0:0.1 vim "$1"
}
so you can just run
start_vim myFile.py
This is possible to do using features of vim, but it has nothing to do with tmux specifically. If the version of vim you are using was compiled with the
+clientserver
option, then there is a way to do this. To check, run:version
in vim, and look for+clientserver
. The client server capabilities of vim depend on X11, so if you don't see it, installing gvim might help. See https://unix.stackexchange.com/a/23601 for more information on the X11 dependency.Now on to how to use it. First, set up your tmux panes however you want. In the pane that you would like to be the dedicated editor, the following command will create a vim "server."
Now from another pane, you can run
and the editor will open the specified file(s). Other useful commands are
The first opens the specified file(s) in separate tabs, and the second sends the specified key sequence to the server.
See http://vimdoc.sourceforge.net/htmldoc/remote.html or run
:help remote
in vim for more information on vim's client server features.