我想知道是否可以根据项目结构快速编辑某些特定文件。例如,如果标识为Laravel项目的文件夹将激活此键映射:
int Fibonacci(int n) {
System.out.println(n + "N");
if (n <= 1) {
return n;
} else {
return Fibonacci(n - 1) + Fibonacci(n - 2);
}
}
那么" Laravel framework
if(artisan_exist)
nmap <leader>lr :e routes/web.php<cr>
nmap <leader>lca :e config/app.php<cr>
nmap <leader>lc :e composer.json<cr>
nmap <leader>len :e .env<cr>
endif
if(webpack_exist)
nmap <leader>js :e webpack.mix.js<cr>
@endif
或artisan_exist
的正确功能是什么,所以我不需要使用ctrlp或nerdtree,因为我认为没有必要点击多个键才打开那些常见的文件。
答案 0 :(得分:1)
如果在某个(项目)目录中启动Vim,则可以测试相对文件路径。例如,要检查项目根目录中是否存在文件webpack.mix.js
,请使用
if filereadable('webpack.mix.js')
nmap ...
endif
如果您需要搜索整个子目录,还有isdirectory()
和glob()
。
如果这是针对某些文件,从任何正在运行的Vim实例打开,并且映射应该是文件的本地(并且不仅取决于 filetype ,Vim具有内置的检测和处理),你需要一个更精细的方法,通常称为本地vimrc :
如果可以集中配置特定命令/本地例外,您可以将此类autocmds放入~/.vimrc
:
:autocmd BufRead,BufNewFile /path/to/dir/* setlocal ts=4 sw=4
使用:setlocal
代替:set
,同样使用:map <buffer> ...
和:command! -buffer ...
非常重要。
另一方面,如果您希望将特定配置存储在项目中(并且不希望通过 modelines 将其嵌入到所有文件中),则可以使用以下两个选项:
如果你总是从项目根目录启动Vim,那就是内置的
:set exrc
允许从当前目录中读取.vimrc
文件。您可以在其中放置:set ts=4 sw=4
命令。
否则,您需要插件的帮助; vim.org上有几个;我可以推荐localrc plugin(特别是my own enhancements),它甚至允许本地文件类型特定的配置。
请注意,从文件系统读取配置具有安全隐患;你可能想要:set secure
。