【问题标题】:tmux split-window shell command, set env variable before shell starttmux split-window shell 命令,在 shell 启动前设置环境变量
【发布时间】:2016-01-04 20:04:43
【问题描述】:

在我的 tmux 配置中,我有一个拆分窗口命令:

bind C-j split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^\"(tmux display-message -p '#S')\"\\\$\" | fzf --reverse | xargs tmux switch-client -t"

它将在 tmux 手册的拆分窗口中定义的 shell 会话中运行所有命令。但是,我的 shell 包含许多与此自定义 tmux 键绑定无关的初始化脚本。而且他们很慢。我可以在split-window 启动 shell 会话之前设置一个环境变量,这样我就可以跳过一些 shell 初始化脚本吗?

【问题讨论】:

  • 你能检查一下我的建议吗?
  • @yacc 抱歉,我留下了评论。

标签: shell tmux


【解决方案1】:

注意:在那个 tmux 环境中更新现在使用。

您可以在命令管道的开头设置此变量。然后,您的 shell 初始化脚本可以检查它的值并采取相应的行动,就像跳过初始化的某些部分一样。

bind C-j set-environment TMUXSPLIT 1 \; split-window -v "tmux list-sessions | sed -E 's/:.*$//' | grep -v \"^\"(tmux display-message -p '#S')\"\\\$\" | fzf --reverse | xargs tmux switch-client -t"

我假设这是在使用 bash 的 Ubuntu 下运行的。在你的 bashrc 中写如下内容:

if [ "$TMUXSPLIT" = 1 ]; then
    ...
fi

【讨论】:

  • 这是一个很好的答案。缺点是 $TMUXSPLIT 环境变量将出现在所有新窗格中,而不仅仅是使用 prefix + C-j 键绑定的窗格。
  • 它确实有@BrunoSutic 描述的问题。但是如果你在split-window 之后执行setenv -r TMUXSPLIT,则应该删除 env。但它有什么缺点吗?
  • 好主意。如果在split-window 之后使用set-env -r 删除if,那么我认为没有缺点。
  • @Daiwai 我建议在您完成测试并感到满意后发布完整解决方案的答案。
猜你喜欢
  • 2022-11-01
  • 2019-08-30
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 2012-10-01
  • 1970-01-01
  • 2013-09-04
相关资源
最近更新 更多