tmux:创建新的分割窗口不起作用

tmux:创建新的分割窗口不起作用

我想要一个包含两个名为 mutt 和 Offlineimap 的窗口的新会话。应该使用两个不同的offlineimap实例(具有不同的配置文件)将offlineimap窗口分成两个。

tmux new-session -d -s mail -n mutt mutt
tmux new-window -d -t mail -n offlineimap "offlineimap -c ~/.dotfiles/mutt/dev.offimap"
tmux split-window -d -v -t mail "offlineimap -c ~/.dotfiles/mutt/trash.offimap"

只创建一个 mutt 窗口,但没有 Offlineimap 窗口。 =>该代码有什么问题?

编辑:

当我更改 的内容时,""它就sleep 1000起作用了。

编辑2:

我发现第二个 tmux 窗口在创建后立即退出,因为它“使用与第一个离线映射相同的元数据”

答案1

你写了:

tmux new-session -d -s mail -n mutt mutt
tmux new-window -d -t mail -n offlineimap "offlineimap -c ~/.dotfiles/mutt/dev.offimap"
tmux split-window -d -v -t mail "offlineimap -c ~/.dotfiles/mutt/trash.offimap"

试试这个,将其写入 atmux_mail.sh或任何您想命名的内容:

#!/bin/bash

tmux \
    -v \
    new-session \
        -d \
        -s mail \
        -n mutt \
        mutt \
    \; \
    new-window \
        -d \
        -n offlineimap \
        "offlineimap -c ~/.dotfiles/mutt/dev.offimap" \
    \; \
    split-window \
        -d \
        "offlineimap -c ~/.dotfiles/mutt/trash.offimap" \
    \; \
    attach

保存并使其可执行后,在命令提示符下运行它以享受新的 tmux 邮件会话:

$ ./tmux_mail.sh

解释

  • \;使每个new-windowsplit-window参数成为单个连续tmux命令的一部分
  • 所以我们省略,因为当所有这些都被指定为单个命令的一部分时,-t您不需要指定目标会话-ttmux
  • 除了最后一行之外的每一行都使用 bash 行延续\(反斜杠后跟空格,后跟行回车)来继续我们希望 bash 运行的命令行,同时允许我们完整地编写命令,但每个命令几乎有一个选项行,为了更容易阅读和清晰,这可以帮助您长期维护此脚本
  • -v对于详细日志记录,需要在开头指定,按照语法概要man tmux
  • -d要分离,所以它不会立即执行连接到当前终端的默认行为,直到我们有机会完全指定我们想要的选项
  • 因此,最终当完成我们希望 tmux 执行的所有选项后,我们必须attach在终端上实际看到最终结果
  • 请注意,如果一个程序是非交互式的,只是运行并退出,例如echo,那么在 tmux 中也会发生类似的情况,它只会运行该程序,然后在程序退出时关闭窗口

因此,只要您的muttofflineimap命令实际工作并且不会立即正常退出,并且在 tmux 之外工作正常,那么使用这些命令,它们应该在 tmux 中工作,创建您想要的 tmux 会话。

相关内容