如何让coc识别CMake项目work子目录下的compile_commands.json文件
你之前的配置不生效的核心原因是:你贴的是vim-lsp插件的配置,和你使用的coc.nvim是完全独立的两个LSP客户端框架,所以配置不会对coc产生任何效果。
方案1:使用项目级coc配置(最推荐,无需修改vimrc)
在项目根目录直接新建.coc-settings.json文件即可,coc默认会自动加载当前工作目录下的该配置文件:
- 如果你用的是coc-clangd(绝大多数coc C++用户的选择):
{ "clangd.arguments": [ "--compile-commands-dir", "./work" ] }
- 如果你用的是coc-ccls:
{ "ccls.initializationOptions.compilationDatabaseDirectory": "./work" }
方案2:写入项目本地.vimrc(符合你要求的实现方式)
如果你坚持要把配置写在项目根目录的本地.vimrc里(已经开启set exrc的前提下),可以添加以下配置:
- 针对coc-clangd:
let g:coc_user_config = extend(get(g:, 'coc_user_config', {}), { \ 'clangd': { \ 'arguments': ['--compile-commands-dir', './work'] \ } \})
- 针对coc-ccls:
let g:coc_user_config = extend(get(g:, 'coc_user_config', {}), { \ 'ccls': { \ 'initializationOptions': { \ 'compilationDatabaseDirectory': './work' \ } \ } \})
额外注意
开启exrc的同时建议在全局vimrc里添加set secure,避免项目目录下的恶意.vimrc执行危险命令。
内容的提问来源于stack exchange,提问作者Arsen Zahray
相关产品推荐
相关产品推荐

