在VIM中使用目录类型映射密钥

时间:2018-01-13 03:44:32

标签: vim

我想知道是否可以根据项目结构快速编辑某些特定文件。例如,如果标识为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,因为我认为没有必要点击多个键才打开那些常见的文件。

1 个答案:

答案 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