Vim Tips Wiki
Tip 451 Printable Monobook Previous Next

created March 28, 2003 · complexity intermediate · author warb · version 6.0

In KDE3 the renameSession will set the Konsole name. Add this to your vimrc file to name the session after the edited file.

autocmd BufReadPost * :silent !dcop $KONSOLE_DCOP_SESSION renameSession %

This one set the title to the current working dirctory when you leave vim.

autocmd VimLeavePre * :silent !dcop $KONSOLE_DCOP_SESSION renameSession $PWD

In KDE4 the qdbus will set the Konsole tab name. Create a script in your $PATH(for example: $HOME/bin) named as update_konsole_tab:

    exit 0

OLD_FORMAT="%d : %n"

if [ "CHK$1" == "CHKset" ];then
    $QDBUS_COMMAND org.kde.konsole.Session.setTabTitleFormat \
        0 "$2" 1>/dev/null 2>/dev/null


if [ "CHK$1" == "CHKclean" ];then
    $QDBUS_COMMAND org.kde.konsole.Session.setTabTitleFormat \
        0 "$OLD_FORMAT" 1>/dev/null 2>/dev/null

Then add these lines into your vimrc:

autocmd BufReadPost * :silent !update_konsole_tab set 'vim: %:t'
autocmd VimLeavePre * :silent !update_konsole_tab clean

In KDE5, the KDE4 qdbus org.kde.konsole command needs to be appended with "-`pidof -s konsole`" which leads to the QDBUS_COMMAND variable becoming:

KONSOLE_PID="`pidof -s konsole`"


Dan thanks for the vim help, however I do not use konsole. So I modified my .tcshrc with this:

# This makes it possible to make vim automagically set the date and time
# in the title bar.
alias vimdate '/bin/date "+%A, %B %e, %Y Time: %H:%M"'
setenv mydate `vimdate`
alias vi 'setenv mydate `vimdate` ; /usr/bin/vim \!* ; cd `pwd`'

then I read the how to for setting or unsetting the title in vim, so I set my .vimrc with this:

:auto BufEnter * let &titlestring = $USER . " on " . hostname() . " :
 \ Viming: " . expand("%:p") . " Date: " . $mydate
:set title titlestring=%<%F%=%l/%L-%P titlelen=70

This with the .tcshrc mod will give you your name on machine Viming : filename : date and time.

I might not always use kde, so I have my xterm do my title work for me. My .tcshrc for my xterms, looks like this:

### ---------------------------------------------------------------
# This is where cd is overloaded and it adjusts the prompt.
# cds: change directory hybrid queueish stack
set cds = ( $HOME )
alias cd 'if ( ${#cds} >= 4 ) shift cds;\\
 chdir \!*;\\
 set cds = ( $cds $cwd );\\
 echo $cds'
alias lastdir 'if ( ${#cds} <= 1 ) set cds = ( $cds $cwd );\\
 @ idx = ${#cds} - 1;\\
 chdir $cds[$idx];\\
 set cds = ( $cds[1-$idx] );\\
 echo $cds;\\
 unset idx'
### ---------------------------------------------------------------
### ---------------------------------------------------------------
# This is where the title bar of the xterm is set.
alias date '/bin/date "+%A, %B %e, %Y Time: %H:%M:%S"'
if ($?tcsh) then
# set prompt="$host{`whoami`}%\!: "
 if ($?term) then
 alias cwdcmd 'echo -n "^[]2;" "$USER on $host : $cwd `date`^G"'
#else # regular csh
# set prompt="$hostnm{`whoami`}\!: "
# if ($term == xterm) echo -n "^[]0;$hostnm^G"
### ---------------------------------------------------------------

Note: In the alias cwdcmd line, after the `echo -n "^[]2;" the ^[ is a control h, I think.

This is why I aliases vi to 'setenv mydate `vimdate` ; /usr/bin/vim \!* ; cd `pwd` When I do a cd `pwd` it automatically changes my title bar to:

me on machine : $PWD day, date, Time: time.

This works with xterm, aterm, wterm, kterm, rxvt, and konsole. Please feel free to email me if you would like me to send you a copy.

Also I run Debian, so there for everything is generic; so I had to figure out how to modify/customize everything with dot files; this way I learn more by doing it myself.