7

当我在终端输入类似

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启动后是否可以以某种方式自动更改目录?

4

5 回答 5

4

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

autocmd VimEnter * cd %:p:h

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

为此,您必须在自动命令中添加一些逻辑,例如

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

您可以自己改进这一点!

于 2012-12-13T23:01:00.613 回答
4

我在我的 vimrc 中使用它:

" Use %% on the command line to expand to the path of the current file
cabbr <expr> %% expand('%:p:h')
于 2012-12-13T20:30:05.963 回答
3

如何最好地解决这个问题取决于您的确切用例。我偏爱:set autochdir,但是如果您希望将工作目录设置为项目根目录,我会使用本地 vimrc插件之一(我使用localrc.vim - 启用每个目录的配置文件),在每个目录中创建一个本地.vimrc文件您的项目根源与

:cd expand('<sfile>:p:h')

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

于 2012-12-14T08:32:30.090 回答
1

in_vimrc

au BufEnter * silent! lcd %:p:h
于 2014-09-07T09:24:30.383 回答
0

试试下面的命令

:cd %:p:h

https://vim.fandom.com/wiki/Set_working_directory_to_the_current_file

于 2019-07-19T10:41:19.903 回答