Change working directory to currently opened file
Asked Answered
K

3

23

How can I change my working directory to the path of the file that I currently have open?

Example

  1. current working directory is $HOME
  2. vim /tmp/test.log
  3. ???
  4. CWD is now /tmp/
Kemper answered 2/10, 2010 at 22:39 Comment(0)
A
31

You can just type

:cd %:h

since %:h will be replaced by the head of the path to the current file.

Artefact answered 2/10, 2010 at 22:40 Comment(0)
L
30

That's actually a builtin. (here's the help link)

:set autochdir

Stick that in your .vimrc or whatnot (:e $MYVIMRC). As mentioned here, sometimes plugins will have issues with that and you need to use something more complicated like

autocmd BufEnter * lcd %:p:h
Lepidus answered 2/10, 2010 at 22:50 Comment(3)
Thanks, I wasn't aware of this! However, I want to do it manually, when needed.Kemper
excellent bonus tip re lcd! I didn't know that existed, but will be very useful.Artefact
Plugins will often have just as many issues using the autocmd method. At least with 'autochdir' they can check to see whether the option is set. In reality good plugins these days account for potential directory changes due to loading files.Furnish
J
3

To change to the directory of the currently open file (this sets the current directory for all windows in Vim):

:cd %:p:h

You can also change the directory only for the current window (each window has a local current directory that can be different from Vim's global current directory):

:lcd %:p:h

In these commands, % gives the name of the current file, %:p gives its full path, and %:p:h gives its directory (the "head" of the full path).

Jealous answered 11/6, 2012 at 7:8 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.