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

自定义 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 的工作目录。当我更改目录时,这没有任何帮助。

我希望这可以在不使用大量脚本的情况下完成。

谢谢大家。

答案1

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

PROMPT_COMMAND="echo -ne \"\\033]0;\${USER}@${HOSTNAME}\\007\\033k\${PWD}\\033\\\\\""

对于 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")

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

答案2

把这个放到你的目录中,~/.tmux.conf这样就可以在 tmux 状态中显示当前目录(你所在的窗格中的目录)

set -g status-left-length 100
set -g status-left '#[fg=green] #T#[default]'

相关内容