How to remove index numbers and symbols from tmux window titles
Solution 1:
~/.tmux.conf
Allow window titles to be renamed by our .vimrc and .bash_aliases config files below and set the title format to only show the name.
See the tmux man page for more options under "FORMATS" and "Variable name". For example, to keep the index number, you would change the window-status-format and window-status-current-format lines to "#I:#W".
set -g allow-rename on
set-window-option -g window-status-format "#W"
set-window-option -g window-status-current-format "#W"
Specific to a configuration without index numbers, you can set your tab creation and movement bindings to be more browser- and Vim-like.
# 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
Set the window title to the filename when entering Vim and saving a file.
if exists('$TMUX')
autocmd VimEnter,BufWrite * call system("tmux rename-window ' " . expand("%:t") . " '")
endif
~/.bash_aliases
I used bash instead of the automatic-rename options in tmux so that the window title would be renamed to the active pane, if applicable. I also rename titles back to the basepath on exiting Vim here.
# 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
Source tmux.conf
tmux source-file ~/.tmux.conf
Source .bashrc
. .bashrc