vscode配置
配置好vscode真的比配置neovim方便多了,不需要过多的插件和设计就能够获得很好的体验,再安装一个vim模拟插件,不比neovim香吗?
基本配置#
可以在Settings页面进行勾选配置,也可以通过编写settings.json进行配置(在Settings页面点击右上角的 文件 图标即可打开),两种方式是等效的。我这里选择直接通过settings.json配置。编写好settings.json后保存即生效。
{
"editor.formatOnSave": true, //保存时自动format(如果安装了clangd则使用clangd进行format)
"editor.fontSize": 15, //设置字体大小
"editor.tabSize": 2, //设置tab的长度
"editor.lineNumbers": "relative", //使用相对行号
"files.autoSave": "off", //禁用自动保存
"search.exclude": { //搜素时将某些文件夹下的文件排除在外
"**/.cache": true
},
"files.exclude": { //不在项目中展示这些文件
"**/.git": true,
},
}
安装插件#
-
Dracula
这个主题挺好看的,直接搜索安装,然后在配置文件settings.json文件中指定主题即可。这个插件提供了两个主题,Dracula和Dracula Soft,我更喜欢Dracula Soft版本。{ "workbench.colorTheme": "Dracula Soft", }
-
Remote-SSH
这是远程开发必备的插件,相信很多vscode用户都使用过这个插件。如果远程服务器的shell安装了美化主题,Remote-SSH连接之后vscode集成终端可能会出现符号乱码的情况。在settings.json中设置相应的字体即可。{ "terminal.integrated.fontFamily": "JetBrainsMono NF", }
-
vim
这个插件在vscode中模拟vim,支持以vimrc的方式进行配置,但是我还是选择直接在settings.json中用json语法配置。这个插件还提供了几个快捷键,如gd跳转到定义处,gh显示错误信息或文档提示等,具体可以查看官方文档。{ /* vim 配置 */ "vim.easymotion": true, //按<leader><leader>进入easymotion模式,然后按任意移动键来显示跳转目标 "vim.incsearch": true, "vim.useSystemClipboard": true, "vim.useCtrlKeys": true, //让vim模拟器占用ctrl键 "vim.hlsearch": true, "vim.insertModeKeyBindings": [ //键位映射 { "before": [ "j", "k" ], "after": [ "<Esc>" ] } ], "vim.normalModeKeyBindingsNonRecursive": [ { "before": [ "<leader>", "d" ], "after": [ "d", "d" ] } ], "vim.leader": "<space>", // 让vscode保有这些快捷键 "vim.handleKeys": { "<C-a>": false, "<C-f>": false, "<C-s>": false, "<C-x>": false, "<C-c>": false, "<C-v>": false, "<C-d>": false, }, }
cpp开发#
代码格式化。#
vscode插件市场中主要有C/C++和clangd两个插件提供cpp补全支持,clangd评分更高,所以我选择clangd。
- 安装clangd插件
remote-ssh连接到服务器之后,将clangd插件安装到远程服务器中。 - 安装clangd服务端
clangd插件需要配合clangd服务端使用。如果远程服务器没有安装clangd服务端,那么vscode会提示是否安装clangd,点击安装即可。vscode会把clangd安装在home目录下.vscode-server文件夹下的某个子文件夹中。也可以选择自行安装clangd。
安装好clangd后,不需要任何配置就能正常使用了。clangd自带format功能,不需要再安装clang-format插件。如果需要自定义format格式,在某个目录下创建一个.clang-format文件,写入自定义的format规则,该目录下所有子文件都会按照.clang-format来进行format。CMU15445的实验项目使用的.clang-format如下,这个规则基于google style,然后对*&的align方式、每行最大字符数以及头文件的排列规则的规定进行了调整。
编辑文件时右键,选择Format Document或按Shift+Alt+F进行format。由于我们设置了保存文件时自动format,也可以通过保存文件的方式触发format。BasedOnStyle: Google # If true, analyze the formatted file for the most common alignment of & and *. Pointer and reference alignment styles are going to be updated according to the preferences found in the file. PointerAlignment is then used only as fallback. DerivePointerAlignment: false PointerAlignment: Right ColumnLimit: 120 # Default for clang-8, changed in later clangs. Set explicitly for forwards compatibility IncludeBlocks: Preserve
补全#
vscode默认智能使用上下箭头进行补全项选择,进行补全时右手必须离开键盘去找上下箭头,很不方便。可以设置使用tab和shift-tab来选择补全项。此项设置不在Settings中,而是在Keyboard Shortcuts中设置。Keyboard Shortcuts也有相应的配置文件keybinds.json(在Keyboard Shortcuts页面点击右上角的 文件 图标即可打开),对其配置如下,即可使用tab选择补全项。
[
{
"key": "tab",
"command": "acceptSelectedSuggestion",
"when": "suggestWidgetVisible && textInputFocus"
},
{
"key": "shift+tab",
"command": "acceptSelectedSuggestion",
"when": "suggestWidgetVisible && textInputFocus"
},
{
"key": "tab",
"command": "selectNextSuggestion",
"when": "suggestWidgetMultipleSuggestions &&editorTextFocus && suggestWidgetVisible"
},
{
"key": "shift+tab",
"command": "selectPrevSuggestion",
"when": "suggestWidgetMultipleSuggestions && editorTextFocus && suggestWidgetVisible"
}
]
cmake#
写cpp一般需要cmake管理项目,为了更方便地编写CMakeLists.txt文件,可以安装CMake Tools插件。
配置汇总#
keybinds.json
[
{
"key": "tab",
"command": "acceptSelectedSuggestion",
"when": "suggestWidgetVisible && textInputFocus"
},
{
"key": "shift+tab",
"command": "acceptSelectedSuggestion",
"when": "suggestWidgetVisible && textInputFocus"
},
{
"key": "tab",
"command": "selectNextSuggestion",
"when": "suggestWidgetMultipleSuggestions &&editorTextFocus && suggestWidgetVisible"
},
{
"key": "shift+tab",
"command": "selectPrevSuggestion",
"when": "suggestWidgetMultipleSuggestions && editorTextFocus && suggestWidgetVisible"
}
]
settings.json
{
"workbench.colorTheme": "Dracula Soft",
"terminal.integrated.fontFamily": "JetBrainsMono NF",
"editor.formatOnSave": true,
"editor.fontSize": 15,
"editor.tabSize": 2,
"editor.lineNumbers": "relative",
"files.autoSave": "off",
"search.exclude": { //搜素时将某些文件夹下的文件排除在外
"**/.cache": true
},
"files.exclude": { //不在项目中展示这些文件
"**/.git": true,
},
/* vim 配置 */
"vim.easymotion": true, //按<leader><leader>进入easymotion模式,然后按任意移动键来显示跳转目标
"vim.incsearch": true,
"vim.useSystemClipboard": true,
"vim.useCtrlKeys": true,
"vim.hlsearch": true,
"vim.insertModeKeyBindings": [
{
"before": [
"j",
"k"
],
"after": [
"<Esc>"
]
}
],
"vim.normalModeKeyBindingsNonRecursive": [
{
"before": [
"<leader>",
"d"
],
"after": [
"d",
"d"
]
}
],
"vim.leader": "<space>",
"vim.handleKeys": {
"<C-a>": false,
"<C-f>": false,
"<C-s>": false,
"<C-x>": false,
"<C-c>": false,
"<C-v>": false,
"<C-d>": false,
},
"[cpp]": {
"editor.defaultFormatter": "llvm-vs-code-extensions.vscode-clangd"
}
}
.clang-format
BasedOnStyle: Google
# If true, analyze the formatted file for the most common alignment of & and *. Pointer and reference alignment styles are going to be updated according to the preferences found in the file. PointerAlignment is then used only as fallback.
DerivePointerAlignment: false
PointerAlignment: Right
ColumnLimit: 120
# Default for clang-8, changed in later clangs. Set explicitly for forwards compatibility
IncludeBlocks: Preserve
总结#
至此,我们就拥有了一个既能享受vim输入的高效性,又能体验vscode各种现代化功能,又不失自定义能力的漂亮的开发环境。
作者:yuxiayizhengwan
出处:https://www.cnblogs.com/yuxiayizhengwan/p/16694557.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库