如何自动更改Vim中的当前路径?

时间:2012-12-13 16:39:30

标签: vim macvim

当我输入类似

的终端时
mvim ./path/to/my/project

Vim打开这个项目目录,在我的NERDTree中我可以看到文件,但是当我尝试运行一些CLI命令时,比如

:!touch some/file/in/my/project

我的当前路径是我的用户主目录

所以如果我想在我的项目目录中创建文件,我必须输入完整的路径,如

:!touch ./path/to/my/project/some/file/in/my/project/name

在vim启动后是否有可能以某种方式自动更改dir?

5 个答案:

答案 0 :(得分:4)

我在我的vimrc中使用它:

" Use %% on the command line to expand to the path of the current file
cabbr <expr> %% expand('%:p:h')

答案 1 :(得分:4)

对于您的特定用例,您可以尝试在VimEnter事件上挂钩。例如,尝试将它放在你的vimrc中:

autocmd VimEnter * cd %:p:h

然后,当您使用$ mvim path/to/my/project/some/file调用Vim时,Vim会自动:cd进入file所在的目录。

为了使用目录,您必须为自动命令添加一点逻辑,例如

autocmd VimEnter * exe 'cd '.(isdirectory(expand('%:p')) ? '%:p' : '%:p:h')

你可以自己改进!

答案 2 :(得分:3)

如何最好地解决这个问题取决于您的确切用例。我偏向:set autochdir,但如果你想将工作目录设置为项目根目录,我会使用其中一个本地vimrc 插件(我使用localrc.vim - Enable configuration file of each directory) ,使用

在每个项目根目录中创建一个本地.vimrc文件
:cd expand('<sfile>:p:h')

在里面。然后,无论您打开的项目层次结构中的哪个文件,工作目录将始终设置为项目根目录。

答案 3 :(得分:0)

in_vimrc

au BufEnter * silent! lcd %:p:h

答案 4 :(得分:0)