打开vim时,从树结构中搜索一个文件,如果存在,则执行它
我对每天使用vim很陌生。我正在尽我最大的努力建立一个良好的环境。我经常与Django项目合作。当我在django项目中编辑一个文件时,我想模拟一个类似设置的项目 让我们分析一下这个目录结构:打开vim时,从树结构中搜索一个文件,如果存在,则执行它,vim,Vim,我对每天使用vim很陌生。我正在尽我最大的努力建立一个良好的环境。我经常与Django项目合作。当我在django项目中编辑一个文件时,我想模拟一个类似设置的项目 让我们分析一下这个目录结构: /projects /django-app1 manage.py settings.py .project /django-app1 manage.py settings.py .project 我想要的
/projects
/django-app1
manage.py
settings.py
.project
/django-app1
manage.py
settings.py
.project
我想要的是放置一个名为.project的文件,该文件包含vim命令,如果我打开目录结构中的任何文件,将执行这些命令
为什么??这是我的vimrc,你可以看到,我正在使用一个片段加载VirtualEnvironment变量上的VirtualEnvironment,这很酷,但我认为每次打开一个文件,或者更好地向sys.path添加一些额外的路径,因为我有带有站点包目录的项目
因此:
- 当使用vim打开文件时,如何检测特定的命名文件,并向下查看当前目录
- 如何将此文件作为vim脚本执行
vim +'source **/.project'
你应该做得很好
如果你最近有一次聚会,你也可以更直接地参加
vim -S **/.project
加载python文件时 要在打开/加载特定文件时执行操作,请执行以下操作:
autocmd BufReadPost *.py source %:h/**/.project
加载在包含要打开的文件的子树中找到的任何.project文件
autocmd BufReadPost *.py source %:h/.project
加载在包含要打开的文件的同一目录中找到的任何.project文件
autocmd BufReadPost *.py source %:h/.project
要删除上述自动命令(请记住:添加同一命令两次将执行两次)
有几个名为local_vimrc的插件可以满足您的需要。这是 顺便说一句,你的问题是重复的
编辑:本地vimrc插件的最新实现使用vim7功能。不知何故,这相当于:
source <c-r>=findfile('.local_vimrc',expand('<afile>').';')<cr>
source=findfile('.local_vimrc',expand('))
因此,我更喜欢完整的插件方式,而不仅仅是一个会不时激怒我们的一行代码
注意:我的插件非常旧,它是vim7之前的版本。因为它可以(递归地)工作,我从来没有觉得有必要用现代的vim7列表操作功能重写它。添加了自动命令方法,在文件加载到缓冲区时执行操作。如果子目录中有文件,它将不起作用。顺便说一句,清除自动命令的最佳方法是将其放入一个组,并清除该组。“如果子目录中有文件”?这似乎总是正确的。请注意我如何使用%:h
来限制搜索范围一个:h
是不够的。要正确支持子目录,我们需要查找从当前目录到根目录的任何(/第一个)本地vimrc。类似于source=findfile('.project',expand('.')
应该可以工作。另请参阅插件。谢谢Luc,我正在使用这个解决方案,很好