使用活动窗格密码自动更新 tmux 状态栏

2023-11-22

在 tmux 中,状态栏通常显示窗口列表中窗格的当前工作目录。例如,如果我在一个窗口中有两个窗格,并且这两个窗格具有不同的工作目录,是否可以使用我当前关注的窗格的当前工作目录自动更新状态栏?

澄清一下,如果我有一个带有两个窗格的窗口,并且第一个窗格位于~第二个窗格位于~/Sites,我想在状态栏中的窗口列表中说1:~当我专注于第一个窗格时,并且1:~/站点当我专注于第二个窗格时。


出现提示时的 Tmux 窗格 PWD

有多种方法可以做到这一点。我自己做。最简单且最可定制的方法是设置 tmux 可以访问的全局变量。

首先将其添加到您的.bashrc or .zshrc文件,在每次提示后设置 PWD 变量:

# create a global per-pane variable that holds the pane's PWD
export PS1=$PS1'$( [ -n $TMUX ] && tmux setenv -g TMUX_PWD_$(tmux display -p "#D" | tr -d %) $PWD)'

现在,创建一个显示此变量的脚本,例如~/bin/display_tmux_pane_pwd.sh:

#!/bin/bash
tmux showenv -g TMUX_PWD_$(tmux display -p "#D" | tr -d %)  | sed 's/^.*=//'

剩下的就是将其添加到 satis-bar 中.tmux.conf:

set -g status-left '#(~/bin/display_tmux_pane_pwd.sh)'

切换窗格后可能需要一段时间才能更新,因此您可以使用此命令进行更改。默认情况下,它每 15 秒更新一次,这将使其更新为 5 秒。根据您的喜好更改它。

set -g status-interval 5

其他程序中的 Tmux-pane PWD

有时打开一个窗格或窗口并立即执行程序而不是启动另一个 shell 很有用(例如tmux new-window vim)。这样,当您关闭该程序时,您也会关闭该窗口。不幸的是,我上面描述的方式需要提示才能广播 PWD 的状态。然而,在许多程序中,您可以相当轻松地解决这个问题。这是我的示例.vimrc文件,以便 vim 在更改缓冲区时更新 PWD 状态。

if exists("$TMUX")
    " Get the environment variable
    let tmux_pane_name_cmd = 'tmux display -p \#D'
    let tmux_pane_name = substitute(system(g:tmux_pane_name_cmd), "\n", "", "")
    let tmux_env_var = "TMUX_PWD_" . substitute(g:tmux_pane_name, "%", "", "")
    unlet tmux_pane_name tmux_pane_name_cmd
    function! BroadcastTmuxCwd()
        let filename = substitute(expand("%:p:h"), $HOME, "~", "")
        let output = system("tmux setenv -g ".g:tmux_env_var." ".l:filename)
    endfunction
    autocmd BufEnter * call BroadcastTmuxCwd()
endif
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用活动窗格密码自动更新 tmux 状态栏 的相关文章

  • tmux 使用详解

    什么是 tmux tmux 是一个终端复用工具 xff0c 它允许用户在一个终端窗口中创建多个会话 xff0c 并在这些会话之间切换 这使得用户可以在同一终端窗口中同时运行多个命令 xff0c 而不必打开多个终端窗口 安装 tmux 在 L
  • tmux使用教程

    tmux 的安装 Centos系统中使用 yum 来安装 tmuxyum install tmuxUbuntu系统使用apt安装tmuxapt install tmuxMac OS 使用 brew 来安装 tmuxbrew install
  • tmux 最新版本安装

    tmux centos系统 安装依赖 yum install openssl devel wget https github com libevent libevent releases download release 2 1 12 st
  • nohup训练pytorch模型时的报错以及tmux的简单使用

    问题 在使用nohup命令后台训练pytorch模型时 关闭ssh窗口 有时会遇到下面报错 WARNING torch distributed elastic agent server api Received 1 death signal
  • 工具篇——1、TMUX

    目录 工具篇 一 TMUX 1 安装 2 概念 3 具体操作 3 1 会话 3 2 窗口 3 3 窗格 4 TMUX 配置 5 结对编程 工具篇 本系列专门用于记录一些软件或者小工具的使用 工欲善其事必先利其器 拥有称心如意的工具 可以大大
  • tmux内外vim主题theme不一致

    每次在tmux里边用vim都觉得好丑 明明外边设置theme了 但是到里边就识别不了 在 tmux conf里添加set g default terminal screen 256color 依然不行 解决方案 使用tmux 2 打开tmu
  • 让 tmux windows 继承`activate`d anaconda 环境

    为了方便起见 并考虑到activate 环境非常慢 我想激活一个环境 然后启动一个tmux会议 我想要全新的tmuxwindows 也可以激活环境 我想要不同的tmux会话能够支持不同的 anaconda 环境 我该怎么办 是否存在任何不支
  • iTerm 2 不支持 .tmux.conf 中声明的键绑定

    我正在使用最新稳定版本的 iTerm2 2 0 和最新的 Homebrew 版本的 tmux 1 9a 不幸的是 我的键绑定声明于 tmux conf不能在 集成模式 下使用 iTerm2 tmux 组合 即当 iTerm2 接管 tmux
  • 键转义序列不适用于 tmux

    我一直在使用iTerm2 and vim一阵子 当我需要使用组合键时 我遇到了一些问题 例如CTRL F10 and SHIFT F10里面一个vim会话在里面运行iTerm2 定义键绑定非常简单 例如
  • 使用 xclip 后 Tmux 中的键盘快捷键被停用

    我在 tmux conf 中使用以下配置从 xclip 来回复制文本 bind C c run tmux save buffer xclip i sel clipboard bind C v run tmux set buffer xcli
  • 如何根据是否设置环境变量来设置和使用 tmux.conf 中的变量

    免责声明 我完全意识到 我在下面描述的问题有一些解决方案 涉及编写和调用与正在运行的 tmux 服务器交互的 shell 脚本 或者在启动 tmux 服务器之前设置必要的环境变量 我专门发布这个问题看看是否可以解决这个问题without使用
  • 具有 tmux 集成的 Iterm2 不使用 .tmux.conf 中的键绑定

    我已经在 iTerm2 中使用 tmux 一段时间了 但我还没有使用 iTerm2 现在附带的 tmux 集成 我开始考虑使用 tmux 集成 因为它允许您在 tmux 内使用 shell 集成 我遇到的问题是在我这样做之后tmux CC我
  • Tmux 边框显示为 x q 而不是线条?

    我无法让 tmux 显示边框线 它们是用 x 和 q 创建的 它是一个 debian squeeze 服务器 区域设置设置为 en US UTF8 我也尝试添加 instructs tmux to expect UTF 8 sequence
  • 如何从 tmux 会话获取 stdout 和 stderr?

    我正在linux系统中编写一个示例python程序 我在用tmux https linux die net man 1 tmux创建会话并在 tmux session 中执行另一个脚本 我想将 stdout 和 stderr 从 tmux
  • 适用于 Microsoft Windows 的终端多路复用器 - GNU Screen 或 tmux 的安装程序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找适用于 Microsoft Windows 的终端多路复用器 我无法找到 tmux 和 GNU Screen 的 Microso
  • 如何在 tmux 中强制使用 emacs 风格的状态键?

    我在 tmux 1 8 中遇到这个问题 我想设置status keys选项 emacs 因为我真的不喜欢在 vi 模式下输入命令 但是 将以下行添加到 tmux conf 没有任何效果 set g status keys emacs 当 t
  • 如何使用鼠标滚轮在 tmux 面板中启用滚动? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 需要使用鼠标滚轮在 tmux 窗格中启用滚动 我怎样才能得到这些提示 我可以使用它 当然如果它存在的话 鼠标选择窗格打开 option 原
  • 如何在tmux中获取send-keys的结果?

    我正在使用 tmux 来运行服务器控制台 要检查控制台是否正在应答 我想使用send keys在控制台上运行命令 tmux send keys t mysess mywin show info Enter 实际上 我目前正在将完整的控制台输
  • 如何将tmux热键设置为Ctrl-,即Ctrl+逗号

    我在 Mac OS X 上设置首选 tmux 热键时遇到了一些麻烦 The most common hotkeys that invokes tmux s magics are CTRL A and CTRL B But I would r
  • 在 byobu 选项卡中启动命令的脚本

    我已经使用 screen 来启动服务器进程 以便稍后我可以在需要时附加并再次分离以继续执行其他操作 它工作得很好 但我最近发现了 byobu 我真的很喜欢它 我想使用相同类型的脚本来运行服务器 但我想将其附加到 byobu 选项卡 而不是屏

随机推荐