I have a nice bash alias for tmux which opens a new window and directly ssh to whatever I specify
function s() {
tmux neww -n "$1" -- ssh "$1"
}
I want to also have something similar directly as an alias in tmux, so I can do C-b :s myhost
when I’m already in a ssh to another server, instead of having to change windows, and then run s myhost
in bash.
I tried using tmux’s confiug to do various variations of
#set -s command-alias[100] s='run s'
Using direct ssh, or without using run etc. But I can’t figure it out.
This is what I have in my . tmux.conf for SSH you can adapt
bind-key S command-prompt -p "ssh to:","port:" "new-window -n %1 'ssh %1 -p %2'"
That means when I press
C-b, SHIFT S
it asks what IP to connect to (type it in when it asks on the status bar of TMUX), press enter, the it asks the port to use.bind-key S command-prompt -p "ssh to:","port:" "new-window -n %1 'ssh %1 -p %2'"
Brilliant. I removed the port since I usually use my ssh config or I can just type with with
:
and it’s what I needed. Cheers
In tmux, you usually set configuration options with
set -g
in tmux.conf. “-g” sets a global option which will apply to all new windows and sessions, otherwise the option applies only for the current window, which is usually not what you want.Since
command-alias
is an array, you can use the-a
flag to append a new value at the end.With that said, try this:
set -ga command-alias s="new-window ssh foo"
Keep in mind that
run
in tmux runs a shell command in the background, so you most likely want to use something likenew-window
ornew-session
instead.