I know CTRLg displays the current file you\'re working on. Is there a way to modify my .vimrc
such that the filename/path is always displa
In your statusline, add a %F
to display the full path:
:help statusline
" Add full file path to your existing statusline
set statusline+=%F
Note, %F
will be the full path. To get a path relative to the working directory, use %f
.
If your statusline is not already visible, you may first need to configure it to be always visible, via laststatus=2
set laststatus=2
See :help laststatus
for what the options mean. Normally, the statusline may be hidden, or hidden unless multiple buffers are open, but I find it extremely useful to have on all the time with customizations like this, well worth giving up one screen line reserve for it.
If you are using vim-airline, put in .vimrc
:
let g:airline_section_c = '%<%F%m %#__accent_red#%{airline#util#wrap(airline#parts#readonly(),0)}%#__restore__#'
This is a modification of the airline default, changing %f
by %F
.
I've always used :f
, but the answer and links from @MichaelBerkowski are amazing!
:f
shows the path, line count, modified state, current cursor position, and more...
I didn't know about CTRLG but it appears to be about the same.
set ls=2
add this in vimrc, and you will see the file name at the bottom always.
If you want the path to include resolved symlinks, use the following:
set statusline +=%{resolve(expand('%:p'))}\ %*
To keep the '~' abbreviation for your home directory, include fnamemodify
set statusline +=%{fnamemodify(resolve(expand('%:p')),':~')}\ %*
The only way I found to get the full path of the file I'm working in is: :echo expand('%:p')
. You can re-map ctrl+g if you want, but I personally don't like shifting away from the standards too much. I've mapped F7 like so:
map <F7> <Esc>:echo expand('%:p')<Return>