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

Sta*_*hin 7 vim macvim

当我输入类似的终端时

mvim ./path/to/my/project
Run Code Online (Sandbox Code Playgroud)

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

:!touch some/file/in/my/project
Run Code Online (Sandbox Code Playgroud)

它发生了,我当前的路径是我的用户主目录

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

:!touch ./path/to/my/project/some/file/in/my/project/name
Run Code Online (Sandbox Code Playgroud)

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

glt*_*lts 5

对于您的特定用例,您可以尝试在 VimEnter 事件上连接一些东西。例如,尝试将其放入您的 vimrc 中:

autocmd VimEnter * cd %:p:h
Run Code Online (Sandbox Code Playgroud)

然后,当你调用Vim时,$ mvim path/to/my/project/some/fileVim会自动:cd进入到该目录file中。

为了使其能够与目录一起使用,您必须向自动命令添加一些逻辑,例如

autocmd VimEnter * exe 'cd '.(isdirectory(expand('%:p')) ? '%:p' : '%:p:h')
Run Code Online (Sandbox Code Playgroud)

您可以自己改进这一点!


Mat*_*dge 4

我在我的 vimrc 中使用它:

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