我如何设置tmux,使它启动与指定的窗口打开?
当前回答
我试着用了这一页上的所有想法,但没有一个我喜欢。我只是想要一个解决方案,当我的终端打开时,用一组特定的窗口启动tmux。我还希望它是幂等的,即打开一个新的终端窗口接管tmux会话从前一个。
上面的解决方案通常倾向于打开多个tmux会话,而我只想要一个。首先,我把这个添加到我的~/.bash_profile中:
tmux start-server
if [[ -z "$TMUX" ]]
then
exec tmux attach -d -t default
fi
然后我在我的~/.tmux.conf中添加了以下内容:
new -s default -n emacs /usr/local/bin/emacs
neww -n shell /usr/local/bin/bash
neww -n shell /usr/local/bin/bash
selectw -t 1
现在,每当我启动一个终端或启动tmux或其他什么,我要么重新连接到我现有的所需设置(名为default的会话),要么用该设置创建一个新会话。
其他回答
您可以编写一个小型shell脚本,用所需的程序启动tmux。我在一个称为dev-tmux的shell脚本中有以下内容。开发环境:
#!/bin/sh
tmux new-session -d 'vim'
tmux split-window -v 'ipython'
tmux split-window -h
tmux new-window 'mutt'
tmux -2 attach-session -d
所以每次我想启动我最喜欢的开发环境时,我都可以这样做
$ dev-tmux
:~$ tmux new-session "tmux source-file ~/session1"
session1
neww
split-window -v 'ipython'
split-window -h
new-window 'mutt'
在.bashrc中创建别名
:~$ echo `alias tmux_s1='tmux new-session "tmux source-file ~/session1"'` >>~/.bashrc
:~$ . ~/.bashrc
:~$ tmux_s1
试试兄弟,这是一个项目引导器。
它提供了与tmux交互的简单api。
它看起来是这样的:
#!/bin/sh
# @ project_name/tasks/init.sh
structure project_name
window editor
run 'vim'
window terminal
run 'echo happy coding ...'
focus editor
connect project_name
要启动一个项目,所有人需要做的是运行以下命令-
兄弟开始<project_name>
检查下面的截屏,它展示了如何开始与兄弟和使用它的tmux api。
https://user-images.githubusercontent.com/8296449/50532502-2cf3e400-0b6e-11e9-84af-c5f77a04e5cc.gif
为了简单地打开带有多个窗格的tmux并运行一些命令,我创建了以下bash文件:
#!/bin/bash
tmux split-window -v -p 30 -c ~/path/to/folder1
tmux split-window -h -p 66 -c ~/path/to/folder2
tmux split-window -h -p 50 'mongod'
运行bash文件得到以下内容:
-----------------------------------
| |
|---------------------------------|
| folder1 | folder2 | mongod |
-----------------------------------
首先,我有@jasonwryan的方法,但如果你有超过2个配置,它会让人困惑。
所以我创建了一个别名函数:
tmx () {
tmux "$2" source-file "$HOME/.tmux/$1.conf";
}
在~ /。Tmux / I有多个会话用于许多用途。例如,我在不同的公司工作,他们拥有彼此的开发环境。因此,使用上面的alias函数,我可以简单地调用:tmx company1并加载我需要的配置。
更新:tmux命令后的“$2”的目的是,您可以传递额外的tmux参数。