惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
腾讯CDC
D
Docker
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
The Cloudflare Blog
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
量子位
美团技术团队
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

Howard Cheung

记一次内存占用异常排查 —— memory ballast 被分配了物理内存 Goodbye ICPC 2020 ICPC 济南站感想和部分题解 2020 CCPC 秦皇岛站感想和部分题解 在 KDE(Xorg)中获得完美的平铺桌面体验 fcitx5 简评和使用方法 使用 clash 和路由表实现透明代理 记2019第二轮暑期集训 这一次要把自己以前所有没用到的倔强都用完,把所有的半途而废都给弥补上 ── 记2019第一轮暑期集训 2019年电子科技大学ACM暑期前集训图论专题解题报告 2019年电子科技大学ACM暑期前集训动态规划专题解题报告 2019 年电子科技大学 ACM 暑期前集训数据结构专题解题报告 实用刷题、线上赛C++配置(VSCode + ccls)
实用刷题、线上赛C++配置(VSCode + ccls)
Howard Cheung · 2019-07-24 · via Howard Cheung

写不动题了,来写篇小文章放松一下,记录一下自己的配置,也供读者参考。

注:运行环境为Arch Linux

  • gcc 如果不用pbds等,可以直接用clang编译,和gcc的差异基本上只有少量UB,__int128也是支持的,不过Linux基本上不能不装gcc
  • llvm(clang) 除了作为一个编译器之外,还提供强大的自动补全、代码检查、代码格式化等相关工具,clion、qtcreator等都依赖它
  • ccls 基于clang的LSP(language server protocol),完成度比clang的类似组件clangd更高。注意:更新clang后需要用新版本的clang重新编译ccls,否则可能会出现各种问题(包括完全挂掉)
  • visual-studio-code 体验不错,插件生态非常好的编辑器
  • ccls 核心插件,提供语法检查、补全、高亮、变量重命名、code lens等等
  • clang-format ccls的提供的格式化偶尔会抽风,单独用这个比较稳定
  • Code Runner 一键编译运行
  • easy-snippet 非常方便的snippet管理工具,可以用来存板子
  • CodeLLDB 可选,整合lldb,偏好gdb的用户可以不装
  • Vim 可选,vim模拟
  • ICIE 拉取codeforces上面的题目和样例,并根据通用模板生成文件,并且可以一键测试,通过后直接submit,现在已经支持直接拉取正在进行或即将进行的比赛,除了hack和看榜之外可以不用打开浏览器
  • Better Online Judge 和前者类似,用于vjudge上的比赛,功能较弱,拉取不了样例
  • vscode-clangd 备用,比如在睡前更新clang后忘记重编译ccls,第二天开始打了发现ccls炸了,可以把clangd拉出来救急(亲身经历)。目前它的功能略弱于ccls,但毕竟是llvm官方的组件,不排除以后会赶超

注:如果使用第三方调试工具的话,不用安装微软官方的cpptools插件

可以调整自动补全的case sensitivity(大小写敏感)和detailed label(补全时显示标准库函数的详细功能)。高亮部分可以根据自己喜好调整,建议打开type aliases等

可以自己改运行命令,以下供参考:

1
2
"c": "cd $dir && gcc -g $fileName -o /tmp/ctest && time /tmp/ctest",
"cpp": "cd $dir && g++ -g $fileName -o /tmp/cpptest && time /tmp/cpptest",

VSCode的vim插件功能挺多的,尤其是支持neovim做后端,以下设置供参考

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
"vim.easymotion": true,
"vim.enableNeovim": true,
"vim.sneak": true,
"vim.sneakUseIgnorecaseAndSmartcase": true,
"vim.statusBarColorControl": true,
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "1",
"vim.autoSwitchInputMethod.obtainIMCmd": "/usr/bin/fcitx-remote",
"vim.autoSwitchInputMethod.switchIMCmd": "/usr/bin/fcitx-remote -t {im}",
"vim.foldfix": true,
"vim.neovimPath": "/usr/bin/nvim",
"vim.useSystemClipboard": true,

"icie.template.list"下写你的通用模板的文件路径

这个插件的通用模板是硬编码的,直接修改~/.vscode/extensions/yiyangxu.better-oj-<版本号>/out/utils/template.js