自定义 tmux 状态以表示当前工作目录和文件

use*_*397 6 tmux

我已经玩了几天了,所以我确定我错过了一些简单的东西。喜欢 tmux。使用它进行开发并拥有如此多的窗口,我需要一种更好的方法在状态栏和缓冲区列表中区分它们。看到“bash”和“vim”的列表根本没有帮助。而且由于它们都在同一主机上 - 现在不要关心主机名。

我想显示当前的工作目录,以及正在处理的文件。例如,当我查看当前看到的缓冲区列表时:

(0) 0: vim [100x44] (1 个窗格) "murph"
(1) 1: vim [100x44] (1 个窗格) "murph"
(2) 2: bash- [100x44] (1 个窗格) "murph"
( 3) 3: bash* [100x44] (1 个窗格) "murph"

这是我想看到的
0:vim main.py ~/devl/project1
1:vim index.html ~/devl/samples/staticfiles
2:bash ~/devl/sandbox
3:bash ~/.vimrc

我想在每个单独窗口的状态栏中看到类似的信息。虽然我能够让 PWD 显示在窗口的状态栏中,但它只是启动 tmux 的工作目录。当我更改目录时,这没有任何帮助。

我希望这可以在没有一堆脚本的情况下完成。

谢谢大家。

h0t*_*1r3 1

对于 bash 添加到 .bash_profile 或其他内容:

PROMPT_COMMAND="echo -ne \"\\033]0;\${USER}@${HOSTNAME}\\007\\033k\${PWD}\\033\\\\\""
Run Code Online (Sandbox Code Playgroud)

对于 vim 添加到 .vimrc:

if &term == "screen"
    set t_ts=^[k
    set t_fs=^[\
endif
if &term == "screen" || &term == "xterm"
    set title
endif

autocmd BufEnter * let &titlestring = "vim " . expand("%:t") . " " . expand("%:h")
Run Code Online (Sandbox Code Playgroud)

对于那些不熟悉的人,要在 vim 中获取转义序列 ^[,请按 Control-V Escape。