我是每天使用vim的新手。我正在尽力建立一个良好的环境。我在Django项目中工作很多。我想在django项目中编辑文件时模拟像设置这样的项目。
让我们假设这个目录结构:
/projects
/django-app1
manage.py
settings.py
.project
/django-app1
manage.py
settings.py
.project
我想要的是放置一个名为.project的文件,其中包含将在目录结构中打开任何文件时将执行的vim命令
为什么呢?这是我的vimrc https://github.com/mariocesar/dotfiles/blob/master/.vimrc#L151你可以看到我正在使用一个片段加载virtualenv,如果它存在于环境变量上,它非常酷,但我不认为每次打开文件都这样做是有效的,或者甚至更好地添加一些额外的路径到sys.path,因为我有一个带有site-packages目录的项目。
所以:
答案 0 :(得分:1)
我认为
vim +'source **/.project'
应该很好地完成这个伎俩。
如果你有最近的bash,你也可以更直接
vim -S **/.project
在打开/加载某个文件时执行操作:
autocmd BufReadPost *.py source %:h/**/.project
加载在包含正在打开的文件的子树中找到的任何.project文件
autocmd BufReadPost *.py source %:h/.project
加载在包含正在打开的文件的同一目录中找到的任何.project文件
删除上述自动命令(请记住:两次添加相同的命令将执行两次)
autocmd! BufReadPost *.py
答案 1 :(得分:1)
有几个名为local_vimrc的插件可满足您的需求。这是mine。
顺便说一句,您的问题与Vim: apply settings on files in directory
重复编辑:local_vimrc插件的最新实现使用vim7功能。不知何故,这相当于:
source <c-r>=findfile('.local_vimrc',expand('<afile>').';')<cr>
(感谢sehe提醒我';')
“不知何故”,因为,缺少许多重要功能:
'$HOME\|/opt/projects/
)因此我倾向于采用完整的插件方式,而不仅仅是一个会不时激怒我们的单行。
注意:我的插件很旧,它是vim7之前的。由于它的工作(递归),我从来没有觉得需要用现代的vim7列表操作函数重写它。