![如何在 iTerm2 中的单独窗口上启动新的 tmux 会话?](https://linux22.com/image/136332/%E5%A6%82%E4%BD%95%E5%9C%A8%20iTerm2%20%E4%B8%AD%E7%9A%84%E5%8D%95%E7%8B%AC%E7%AA%97%E5%8F%A3%E4%B8%8A%E5%90%AF%E5%8A%A8%E6%96%B0%E7%9A%84%20tmux%20%E4%BC%9A%E8%AF%9D%EF%BC%9F.png)
我想在 iTerm2 中的单独窗口上启动 tmux 会话。现在我正在编写自己的配置脚本来启动会话。
tmux new-session -s dev -n main -d
tmux send-keys -t dev "cd $DL" C-m
tmux split-window -h -t dev
tmux split-window -v -t dev -p 30
tmux resize-pane -x 70 -y 20
tmux attach -t dev
这将启动一个新会话,但窗口位于我执行脚本的窗口上,而不是 iTerm2 中新的单独窗口。
所以我将第一行 ( tmux new-session -s dev -n main -d
) 更改为tmux -CC new -t dev
,但是虽然会话在新窗口中启动,但它没有拆分和调整大小。似乎只是在新窗口中打开新会话而已。
如何使其在新窗口中启动并包含所有初始设置,包括目录更改、拆分窗口等...?
答案1
您可以使用 applescript 执行以下操作:
$ cat a.bash
#!/bin/bash
osascript - "$@" <<EOF
on run argv
tell application "iTerm"
activate
set new_term to (create window with default profile)
tell new_term
tell the current session
repeat with arg in argv
write text arg
end repeat
end tell
end tell
end tell
end run
EOF
这提供了一个脚本,然后可以将传入其中的参数传递到另一个 iterm2 终端。
例如:
$ ./a.bash "echo 'hello iterm2'"
参考
答案2
你快到了。您的控制模式命令大部分是正确的,但您应该替换最后的与它对齐,而不是第一行。使用它作为你的最后一行:
tmux -CC attach -t dev
顺便说一句,您的前两行可以合并为一行:
tmux new-session -s dev -n main -d "cd $DL; $SHELL"