使用活动窗格密码自动更新 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 的安装和基本用法 以帮助您入门和运行 什么是 tmux Tmux 是终端多路复用器的替代品GNU 屏幕 换句话说 这意味着您可以启动 Tmux 会话 然后在该会话中打开多个窗口 每个窗口占据整个屏幕 并且可以分割成矩
  • 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 环境 我该怎么办 是否存在任何不支
  • tmux 绑定分号

    有什么办法可以绑定吗 059 到 tmux 中的命令 默认绑定到last pane 但是 我想将其重新绑定到 select pane R 我尝试将以下内容放入我的 tmux conf 中 但似乎都不起作用 bind 059 select p
  • tmux 使用当前激活的 conda 环境创建新窗格或窗口

    当我使用 tmux 创建新窗格或窗口时 我想使用我刚刚使用的相同 conda 环境 IE 我现在使用名为 conda envXXXenv 我用Ctrl b 要创建一个新窗格 我想要的是新创建的窗格由 conda env 激活XXXenv 事
  • 使用 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:失去焦点时自动隐藏面板

    我最近开始使用 tmux 进行 Vim 编辑 在 PyCharm 中 我曾经在底部有一个终端 我可以通过几次按键来切换屏幕 我希望 tmux 具有相同的功能 在 Vim 中全屏编辑代码 然后当我需要运行命令时 直接转到屏幕底部的终端窗格 然
  • 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
  • 是否可以找到当前正在使用的 tmux 套接字?

    我正在尝试获取当前正在使用的 tmux 套接字列表 但到目前为止我想出的最佳解决方案是签入 tmp tmux 或 TMPDIR 据我所知 即使当前没有 tmux 会话正在使用这些套接字 tmux 也会将这些套接字保留一段时间 因此 我希望有
  • 无法获取用于 tmux 和 OSX 的删除键

    在通过自制软件安装了 tmux 的 OSX 上 我似乎无法让 删除 键起作用 我正在使用 iterm2 并将删除映射到 H 如果没有 tmux 删除 键可以正常工作 修复 Apple M1 Pro OSX 12 4 tmux 3 3a 上的
  • 我该如何将 HOME 键绑定为 tmux 前缀?

    有没有办法在 tmux conf 中执行此操作 如果其他一切都配置正确 那么应该很简单 只需将其放入您的 tmux conf set option g prefix Home 注意 除非您手动 获取 您的 tmux conf 对文件的更改仅
  • 如何在 tmux 中强制使用 emacs 风格的状态键?

    我在 tmux 1 8 中遇到这个问题 我想设置status keys选项 emacs 因为我真的不喜欢在 vi 模式下输入命令 但是 将以下行添加到 tmux conf 没有任何效果 set g status keys emacs 当 t
  • 当在 tmux 会话中打开的 vim 进程上移动光标时,为什么它时不时地会留下幽灵字符的痕迹 - ^[OB,^[OA?

    如果我向上翻页和向下翻页 这些就会消失 为什么会发生这种情况以及如何纠正 https i stack imgur com DnMYl png https i stack imgur com DnMYl png 我最近摆弄了我的 vimrc
  • 将 tmux.conf 拆分为多个文件?

    我有一个在计算机之间共享的通用 tmux 设置文件 tmux conf common 我希望能够在我的 tmux conf 中获取此文件 在 bash 中实现此目的的一种方法是让每台计算机的 bashrc 获取公共文件 有没有办法在 tmu
  • 启动时 Tmux [退出] [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • 查找PID所属的tmux会话

    我正在使用 htop 所以看看哪些进程占用了大量内存 以便我可以杀死它们 我有很多 tmux 会话和很多类似的流程 如何检查 PID 位于哪个 tmux 窗格中 以便确定我正在杀死我想杀死的东西 鉴于PID下面一行是目标 pid 号 tmu

随机推荐