119

If I open a file with vim dir/to/my/file.c how can I easily open the directory dir/to/my in vim's filebrowser?

11 Answers 11

141

Try :Ex[plore]. From :help Ex:

:Explore will open the local-directory browser on the current file's directory (or on directory [dir] if specified). The window will be split only if the file has been modified, otherwise the browsing window will take over that window. Normally the splitting is taken horizontally.

1
  • Make sure you set nocompatible on your .vimrc or somewhere else. If you open vim in compatible mode (e..g, vim -u NONE), even if you set nocompatible later, netrw plugin won't be loaded and you won't be able to run :Ex. The following setting might be necessary, too: filetype plugin on. More details here: vi.stackexchange.com/questions/29343/….
    – awvalenti
    Mar 20 at 12:49
106

I personally prefer the:

:Sex

command. It does the split window for you, and drops you into the current directory.

:Sex dir/to/my

works too.

4
  • 22
    You can also use :Vex to open the directory in a vertical split.
    – Chuan Ma
    Jun 25, 2014 at 16:56
  • 8
    And it turns out that Tex was exactly what I was looking for (rather than tabe.) Apr 28, 2016 at 13:42
  • 1
    Why can I never remember this shortcut Aug 18, 2018 at 6:17
  • :Sex is short for :Sexplore and :Vex is short for :Vexplore , and so on.
    – Flimm
    Aug 15, 2023 at 6:58
29

You could use:

:e %:h

More info on expansions is here: http://vimdoc.sourceforge.net/htmldoc/eval.html#expand()

2
  • I love this! You can run this command repeatedly to keep going up one directory.
    – Flimm
    Aug 15, 2023 at 6:59
  • To turn it into a keyboard shortcut binding to F4, add this to your .vimrc file: noremap <F4> :e %h<cr>
    – Flimm
    Aug 15, 2023 at 7:00
13

As already mentioned, you can just do ":Explore" and it will open the file explorer for the directory of the current file.

However, if you need to explicitly specify the directory, you can use ctrl+r on the :-command line to read the contents of any register in, and the % register is the current filename, including a path if necessary. So, just do :e ctrl+r% then backspace over the filename, and press enter.

There are other ways to do it, but this is the method I usually use.

1
  • 7
    I know this is way old, but you can also do :e %[tab] which will expand % for you.
    – Brian
    Dec 7, 2011 at 15:20
8

For opening Windows Explorer showing current file's directory :

:!start explorer /select,%:p

(Source : http://vim.wikia.com/wiki/Open_Windows_Explorer_showing_directory_of_current_buffer )

3
:e `dirname %`

dirname expands to the directory in which current file is.

0
3

Just :E should do it. Tested on neovim.

3
  • 2
    How do we go back to the file after :E?
    – user674669
    Jan 5, 2021 at 5:16
  • 1
    Use this command :Rex Oct 30, 2021 at 9:42
  • 1
    Just Re, no need for x, appears to work to go back and forth between netrw and editing a file. Nov 25, 2022 at 18:50
1

:e dir/to/my/

:e . opens the directory you initially launched vim from.

Vim browser 'c' sets the working directory.

I'm not sure if there is a way to automatically jump to the directory of the file you are editing.

1

If you edit with the pwd command on unix it will open the current directory you are in.

:e `pwd`

This will not work like you want it if you did a cd while in vim.

1

if you want to actually get a shell in it you'll need to :lcd %:p:h run :shell and then restore the working directory after you've exited

0

If you want to launch a custom terminal emulator in your current directory's buffer, add something like this to your vimrc:

" Set Vim's current directory to the opened buffer
set autochdir
nmap <leader>k :silent !kitty &<cr>

Replace kitty with your favorite terminal emulator.

See also:

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .