neovim - 如何从子目录中提取 compile_commands.json?
问题描述
我有一个 c++ cmake 项目。我在work
用于编译的主目录中创建了一个子目录。当我编译项目时,我 cd 进入work
并执行cmake .. && make
. 这样,编译器文件就不会污染主目录。work
也是生成的目录,compile_commands.json
我用它来高亮coc语法。
只要在子目录下,coc就找不到了,因此,我在主目录下创建了指向该文件的软链接。这可行,另一个解决方案是添加一个命令CMakeLists.txt
,将文件复制到主目录,但我一直想知道是否有更好的方法来做到这一点。我的意思是,用一种更好的方法,比如.vimrc
在主目录中创建并在其中写入 coc 可以用来查找文件的命令。
到目前为止,我发现 vim 命令可以让我朝那个方向移动,set exrc
将加载本地.vimrc
文件
我试过的一件事是把
" setting with vim-lsp
if executable('ccls')
au User lsp_setup call lsp#register_server({
\ 'name': 'ccls',
\ 'cmd': {server_info->['ccls']},
\ 'root_uri': {server_info->lsp#utils#path_to_uri(
\ lsp#utils#find_nearest_parent_file_directory(
\ lsp#utils#get_buffer_path(), ['.ccls', 'compile_commands.json', '.git/', 'work/compile_commands.json' ]))},
\ 'initialization_options': {
\ 'highlight': { 'lsRanges' : v:true },
\ 'cache': {'directory': stdpath('cache') . '/ccls' },
\ },
\ 'whitelist': ['c', 'cpp', 'objc', 'objcpp', 'cc'],
\ })
endif
进入本地 .vimrc 文件,但这不起作用
我应该在位于主目录的 .vimrc 中输入什么命令来告诉 coc 插件查找./work/compile_commands.json
?
解决方案
推荐阅读
- flutter - 如何从用户输入 Flutter 中获取逗号分隔值
- jq - 从两个文件中导出唯一的 JSON 值
- c# - Steamworks 未初始化。在 Steamworks.InteropHelp.TestIfAvailableClient()
- python - 如何使用 pd.shift 获取值
- linux - 不是函数的全局符号的条目是如何在全局偏移表中初始化的?
- javascript - 如何进行流畅的导航,突出用户所在的地方?
- api - Slack App 下拉列表选择不起作用
- redirect - 通配符将所有潜艇重定向到根目录
- python - Python ProcessPoolExecutor 没有保存所有文件?
- npm - npm v8 挂在 armv7 中(树莓派)