如何在Vim中设置工作目录/当前目录?


109

因此,当我想使用:e命令创建一个新文件时,我不想指定整个路径,而只是指定新文件名。能做到吗

Answers:


144

正如已经建议的那样,您可以使用autochdir,它将更改为您打开的文件的目录,另一个选项是

:cd mydirectory

这将更改目录。这可以是绝对路径,也可以是相对路径,因此:cd ..将向上移动一级。或者,您可以使用:cd %:h,它也将更改为当前文件所在的目录,但无需设置autochdir。

:cd

将目录更改为您的主目录(或在Windows上,打印当前目录)。

:cd -

会将目录更改为您之前访问的目录。


13
如果使用多个窗口,甚至可以使用:lcd更改当前窗口的目录。
没用的2010年

1
@Useless:很有意思...我想我永远都不想那样,但是我想那是一个品味问题。谢谢(你的)信息。
falstro 2010年

3
我试图弄清楚%:h的含义,有什么帮助吗?
Michael

10
@Michael %转换为当前文件名(包括路径),:添加修饰符,h为head,即直到最后一个路径分隔符的路径,即不包括文件名本身。
falstro,2012年

@falstro,您知道:cd命令如何应用于同一vim运行实例中的所有窗口吗?例如:使用split:sp时
mgouin

15

同样,如果您正在使用netrw文件浏览器浏览文件系统,则可以通过按c键设置当前目录。


也可以在shell set autochdir中使'c' key效果生效,以便可以!command args 在更改的目录下使用。
pimgeek

9

尝试添加set autochdir到您的中.vimrc。如果只想更改一次,请使用:cd(或:cd!强制执行)。


1
帮助说,这个突破一些插件(我不知道哪些),所以我已经采取了在我的.vimrc添加映射的预防措施:cnoremap cd. lcd %:p:hnnoremap ,cd :cd %:p:h<CR>:pwd<CR>代替
ErichBSchulz

也可以'c' key在netrw文件浏览器中使用。
pimgeek '16

3

我不知道vim有什么问题。我想要启动vim的目录为当前目录。

我已经按照上面有关autochd的技巧进行了操作,并将其设置为.vimrc中的noautcd。

我还没有做,但是从现在开始我要像这样启动vim:

vim —cmd 'cd `pwd`'

这将使其坚持当前目录!


2

随着netrw:除了按c键设置当前目录下,你也可以把:

let g:netrw_keepdir= 0

在你.vimrc; 这意味着netrw将使浏览目录与当前目录相同。


对于每个netrw文件夹更改,这似乎都具有与:lcd等效的行为。您是否知道此设置如何等效于:cd(更改所有Windows的目录)?谢谢!
mgouin '17

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.