当我输入类似
的终端时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?
答案 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)