如何从 tmux 窗口标题中删除索引号和符号

如何从 tmux 窗口标题中删除索引号和符号

此配置会从 tmux 的窗口标题中删除索引号和其他符号,以提高可读性。其结果为以下格式:

basePath/      -> at the terminal prompt

fileName       -> inside Vim

它主要来自于这个 StackOverflow 帖子。


答案1


〜/ .tmux.conf

允许通过下面的 .vimrc 和 .bash_aliases 配置文件重命名窗口标题,并将标题格式设置为仅显示名称。

请参阅 tmux 手册页以了解“格式”和“变量名称”下的更多选项。例如,要保留索引号,您可以将 window-status-format 和 window-status-current-format 行更改为“#I:#W”。

set -g allow-rename on
set-window-option -g window-status-format "#W"
set-window-option -g window-status-current-format "#W"

具体到没有索引号的配置,您可以将选项卡创建和移动绑定设置为更像浏览器和 Vim。

# Create window -- Ctrl + t 
# Navigate windows -- Ctrl+ h,l 
bind -n C-t new-window
bind -n C-h previous-window
bind -n C-l next-window

的〜/ .vimrc

进入 Vim 并保存文件时将窗口标题设置为文件名。

if exists('$TMUX')
    autocmd VimEnter,BufWrite * call system("tmux rename-window ' " . expand("%:t") . " '")
endif


~/.bash_aliases

我使用 bash 代替 tmux 中的自动重命名选项,以便窗口标题可以重命名为活动窗格(如果适用)。我还在退出 Vim 时将标题重命名回基本路径。

# If Tmux running...
tmux ls > /dev/null 2>&1
TMUX_STATUS=$?
if [ $TMUX_STATUS -eq 0 ]; then

    # Create function to get pwd, trim to "basepath/", 
    # and rename window
    basepathTitle () {
        getval=$(pwd)
        BASEPATH_TITLE=" ${getval##*/}/ "
        tmux rename-window "$BASEPATH_TITLE"
    }

    # Change cd functionality to rename window title to
    # pwd after every directory change
    cd () {

        builtin cd "$@"
        CD_STATUS=$?

        basepathTitle

        return "$CD_STATUS"
    }

    # Change vim functionality to change title 
    # back to basepath on close
    vim () {
        
        /usr/bin/vim "$@"
        VIM_STATUS=$?
        
        basepathTitle

        return "$VIM_STATUS"
    }

    # Set window title when tmux starts
    basepathTitle

fi

来源 tmux.conf
tmux source-file ~/.tmux.conf

源 .bashrc
. .bashrc

相关内容