I am editing multiple files located in the same folder, in multiple tabs, on a single terminal.

pwd(directory in which I am currently working) is displayed on the top of the heading of the terminal, but not the name of the file I am editing. It gets confusing when working with multiple files in the same directory.

How to display the name of the current file on the top of the terminal in addition to the pwd.

I am running vim in a bash shell in gnome-terminal, on 12.04 LTS.

  • 1
    Editing using what editor? In which shell? Which terminal emulator? – terdon Mar 24 '14 at 6:24
  • @terdon - Editing using Vim,bash Shell, xterm emulator – malhar Mar 24 '14 at 6:29
  • 2
    Please edit your question to add extra info, it is hard to read and easy to miss in the comments. You can then ping the user who asked for the information by leaving a comment and including a @ before their username. For example, to ping me: @terdon. – terdon Mar 24 '14 at 6:31
  • xterm has no tabs. Are you sure this is xterm? echo $TERM usually does not return the name of your terminal emulator if that's what you did. – terdon Mar 24 '14 at 6:36
  • @terdon Yes, I did use echo$TERM. it outputs "xterm". I am using 64 bit ubuntu 12.04 LTS default terminal. Are there any other ways to check details of emulator. – malhar Mar 24 '14 at 6:43

You must to have/create a file named .vimrc in your home directory with the following code inside:

let &titlestring = $USER . "@" . hostname() . " " . expand("%:p")
if &term == "screen"
  set t_ts=^[k
  set t_fs=^[\
if &term == "screen" || &term == "xterm"
  set title

enter image description here

Source: gnome-terminal does not allow changing the title

  • To create ^[, which is escape, you need to enter CTRL+V <Esc> – Tinmarino Oct 6 '19 at 21:50

The current (accepted) answer doesn't work if you switch files/buffers within one of your vim sessions. The title won't get updated.

The following is enough to have automatically updated titles in gnome-terminal also when you switch files by using :e foo.txt, :b0, :b#, etc.

Just place this in your ~/.vimrc file:

autocmd BufEnter * let &titlestring = ' ' . expand("%:t")             
set title

System: Ubuntu 14.10, vim 7.4.273, gnome-terminal 3.6.2-0ubunt.

  • Shouldn't set title be on the same line, after |? – Victor Sergienko Oct 25 '17 at 21:44
  • Related to the question: to restore the title after exiting vim, add set titleold= to .vimrc. – Victor Sergienko Oct 25 '17 at 21:44

Simply add

set title

to your ~/.vimrc.

Example title: testfile (~/Documents) - VIM

  • 1
    That's the single answer that worked for me and is the shortest. – user10089632 Feb 12 '18 at 12:47

You can append the name of the file you are editing in a tab in the following manner:

  1. go to the Menu on top of the terminal. Terminal-> Set Title-> Here you append the name of the file you are currently editing

e.g. when you open the terminal , the heading of the terminal shows only "~". pwd shows /home/xxx/

Suppose at this location, you are editing a file ABC.cpp, you can set title of the tab to "~/ABC.cpp" by appending "/ABC.cpp" in Set Title field.

Similarly, you can repeat this for other tabs too.

  • 4
    And you will do these changes every time when you edit another file? Sounds painful... – Radu Rădeanu Mar 24 '14 at 7:19

This also changes the window title if you rename a buffer:

set title
augroup WindowTitleGroup
  autocmd BufEnter,BufFilePost * let &titlestring = expand('%:t')
augroup end

Putting the command in a group avoids executing the command multiple times when sourcing vimrc more than once.

This works nicely with vim-eunuch that lets you rename a file using :Rename.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.