根据Vim中的文件类型创建文件夹
Create folders based on filetypes in Vim
我最近发现了Vim并爱上了它。我主要用Python和C++编写代码。python部分已经完成(尽管建议是受欢迎的:),但我在C++方面遇到了问题。我看到vim可以运行Make命令,也可以使用适当的参数。因此,我希望Vim在当前项目文件夹中创建一个构建文件夹,无论何时检测到C文件,如果构建文件不存在。经过一些谷歌搜索,我尝试了这个:
BufNewFile,BufRead *.cpp
if empty(glob('build')) |
call mkdir("build", "p") |
endif
但它似乎不起作用,也不会出现任何错误。如有任何帮助,我们将不胜感激。我是Vim的新手,所以请原谅任何愚蠢的错误。
您可以这样做:
function! MkBuild(fname) abort
let root = finddir('.git', escape(fnamemodify(a:fname, ':p:h'), ' ') . ';')
if root !=# '
let build = fnamemodify(root, ':p:h') . (!exists('+shellslash') || &shellslash) ? '/' : '') . 'build'
if !isdirectory(build)
call mkdir(build)
endif
endif
endfunction
autocmd BufNewFile,BufRead *.cpp call MkBuild(expand('<amatch>'))
这段代码试图通过向上查找名为.git
的目录来确定项目的根目录,如果它发现它在项目的根中创建了一个目录build
。
当然,您可以用其他东西代替.git
的测试。F.i.向上查找名为CMakeLists.txt
:的文件
let root = findfile('CMakeLists.txt', escape(fnamemodify(a:fname, ':p:h'), ' ') . ';')
相关文章:
- 当我使用自定义类型创建动态数组时,即使使用字符串,它似乎也不起作用
- 根据模板的基本类型创建不同的模板类
- c++ 使用 CRTP 为变量模板中的每个类型创建纯虚拟重载
- C++使用模板为基元类型创建别名?
- 如何为基类通用类型创建向量以使用具体类型元素
- 如何使用基本类型创建C++多维名称数组
- 如何为多个C++类型创建编译时检查
- 从左到右从所有类型创建嵌套包
- 在抽象类中,可以使用抽象类A的类型创建一个静态字段
- 是否可以为缺少的模板成员类型创建默认类型?
- 将"sizeof"应用于不完整的类型(创建的类)无效
- 如何在Swig中为非基元数据类型创建包装器
- 如何在C++中为类型列表中的每个类型创建一个元素并将其添加到向量中
- 如何在MPI中从结构类型创建新的派生数据类型
- "错误:需要类型"创建新实例
- 如何从字符串中存储的类型创建实例
- 如何在编译时从类型创建静态字符串
- 如何使用特定类型创建 NULL
- 从文本文件导入的不同线类型创建变量
- 如何在Visual Studio 2013中为函数类型创建类型别名