VSCode配置

    技术2022-07-10  130

    前言:你是服务端开发人员吗?你还在为调试Shell脚本而烦恼?你对Vim有独特情怀?你在追求极致性能而选择又爱又恨的C++么?同时,你还在“本地Push,远端Pull,一按Make,编不动”?本文作者作为服务端开发人员深知这种痛,特此打造此利器,以供大家ZB的同时,提高开发效率!

    上正文前先看一下我打造好的IDE全貌:

    为什么是VS Code

    对IDE的诉求

    支持多语言,C++、Java、Python、Shell、Proto、Makefile等,一个IDE全部解决;支持Vim、Sublime、Eclipse等快捷键映射;支持多种编码方式;代码自动补全、函数列表、函数引用、函数定义、查找、函数跳转、函数跳回;跨平台使用;本质是编辑器挂接插件,占用内存很少,轻便流畅却不失强大;插件丰富,拓展性极强;支持远程浏览编写代码;支持远程多语言调试;图形化Git管理;Vim插件让你感受IDE带来的益处又不失情怀(我曾忠心于Vim,如今我变了,我变帅了,不,IDE界面变帅了,当然还是Vim操作,情怀不能丢);Docker管理;数据库管理;单元测试;定制化终端;LeetCode插件让你随时随地,清爽的刷题,(摸摸头发,头发还在诶,不怕不怕,使用此神器,打造程序员不掉头发的神话)

    与其他IDE对比

    语言决定IDE,多语言多个编译器,臣妾受不了了;Sourceinsight,不支持GBK,长路径支持不好;Vim对于大型工程操作起来还是很费力,各种插件从早装到黑,我的黑眼圈啊阶段性加重,为啥,总丢配置啊!(前段时间机器重装,啥都不剩);Eclipse等也能配置多语言C++、JAVA,但是他太沉了,臣妾抱不动啊,多开几个窗口,内存蹭蹭往上涨,编个代码,笔记本轰鸣声幻听以为空调坏了呢;

    总之,VS Code以上问题全解决了,当然VS Code也是有问题的,局部变量找不到定义你是几个意思,这个Bug你什么时候修复@微软!

    VS Code安装

    至于VS Code安装在这就不赘述了,Win、Mac环境,网上一搜一大堆,简单到爆,如果这个不会,可以考虑当产品啦,哈哈哈,开玩笑喽,毕竟程序员最爱产品经理la!此处附官网链接:https://code.visualstudio.com/

    下面即将迎来干货,干货多多,幸福满满!篇幅原因,有一些没有细讲,我抛个砖,大家自己玩起来!

    设置公司代理

    settings.json是IDE主要配置文件,今后的插件配置基本和这个东东打交道。

    有些开发环境下为了能下载插件,需要设置代理,设置方式是在settings.json文件中配置如下内容:

    "http.proxy": "http://你的代理服务器IP:端口/",

    "http.proxyStrictSSL": false,

    我的开发机可以连接外网,所以演示后删掉配置!

    VS Code以设置面板的形式操作setting.json,避免不熟悉错误操作。但对于开发人员来讲,直接设置 json 配置文件的方式更方便。在VS Code中使用Ctrl+Shift+P打开命令面板,简单输入settings,选择首选项:打开设置(json),即可打开settings.json文件。

    中文语言包安装

    点击拓展商店—>输入 Chinese—>选择图中第一个安装—>重新加载 即可。

    浏览,编写远程代码

    点击拓展商店—>输入 Remote Development—>选择图中第一个安装—>重新加载 即可;

    重新加载后会出现小电脑这个拓展,按图示操作,可添加多个远程机器;

    配置好连接远程后,左侧出现小电脑

    右键打开远程,会让你输入远程机器密码(多次,至少两次),可配置SSH公私钥免密登入;

    ssh-copy-id user@server ssh-copy-id -i ~/.ssh/id_rsa.pub user@server

    没有公私钥自行ssh-keygen生成,若不懂可参考

    https://man.linuxde.net/ssh-copy-id进行设置。

    设置好登入就可以登入远程机器,选择左侧活动栏中文件标识的资源管理器,打开文件,选择远程开发机的项目根目录,control + ` 打开终端,终端目录即为项目根目录;

    此处终端我已经定制化为Zsh,并装有Git相关插件,后文会介绍。

    至此,在线编辑代码,内嵌终端,让你的开发添加一把利剑。接下要讲调试,也是曾经令无数程序员头疼的问题。

    C++本地调试

    C++插件安装及配置

    首先得安装官方的插件ms-vscode.cpptools。

    然后在settings.json中启用自动补全配置:

    "editor.minimap.enabled": true, "C_Cpp.autocomplete": "Default", "[cpp]": { "editor.quickSuggestions": true }, "[c]": { "editor.quickSuggestions": true }

    构建工程

    目的在mac上使用vscode 和 lldg/gdb调试工具 对编写c/c++程序进行调试。

    调试下面编写的c++代码,文件名称main.cpp,循环中的输出语句中设置断点进行调试。

    #include<iostream> int main(){ int i = 0; for(i = 0;i<10;++i){ std::cout<<i<<std::endl; } std::cout<<"done!\n"; return 0; }

    二个需要的文件(一个负责编译 一个负责调试)

    在使用vscode进行c++调试最重要的是需要launch.json文件(负责调试程序),但是经常也需要tasks.json文件(负责编译程序). 下面简单介绍一个对应文件如何编写和使用.

    需要注意的是:调试时光标要在调试文件,不然会默认调试到光标处!

    tasks.json

    生成命令:(shift+command+p -> Tasks:Configure Tasks, -> Create tasks.json form templates -> Others )

    主要是对之后写的代码进行编译,而该编译操作命令写成一个任务,使用vscode的task用来编译自己写的代码。

    默认形成的任务(task),该任务的作用从shell上,执行echo hello 命令。

    MAC配置

    { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "Mac", "type": "shell", "command": "clang++", "args": [ "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.out", "-g" ], "group": { "kind": "build", "isDefault": true }, } ] }

    Win配置

    { "tasks": [ { "type": "shell", "label": "g++.exe build active file", "command": "C:\\mingw64\\bin\\g++.exe", "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ], "options": { "cwd": "C:\\mingw64\\bin" } } ], "version": "2.0.0" }

    Linux配置

    参数说明:

    "label": 任务的名称 (build main)"type" : 任务的类型,一共有两种(shell/Process),其中shell表示先打开shell,再执行输入命令;process则直接执行命令 (由于编译c++ 需要借助shell上进行执行命令)"command": 实际上执行的命令(c++ 使用clang++命令进行编译)"args": 需要设置的一些参数,应该是跟再command命令后面的.(此处表示对main.cpp文件进行使用clang++编译,其中参数表示的命令: clang++ main.cpp -o a.out -g ; 当使用-g 表示c/c++调试必备的一些参数 同时会再文件目录生成一个可执行文件名开头,DSYM结尾的文件夹(a.out.DSYM)对应的文件夹)

    详细参考: VScode官方文档关于tasks.json的说明

    launch.json

    (在dubug上,找到设置,新建一个c++(GDB/LLDB))生成一个对应的文件

    作用启动的命令,用来执行启动调试的。

    mac配置

    { // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "lldb", "preLaunchTask": "Mac" } ] }

    Win配置

    { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "g++.exe build and debug active file", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "g++.exe build active file" } ] }

    Linux配置

    参数说明

    "name": 配置名称,之后会出现再调试窗口的启动配置上"type": 配置类型(不知道是否可以修改TODO:)"request": 请求配置类型,可以设置为 launch(启动) 或者 attach(附加)"program": 进行调试的程序的位置(此处在当前文件夹下的a.out可执行文件)"stopAtEntry": 设置为true时,程序将会暂停再程序的入口中"cmd": 当前调试所在的路径"externalConsole": 调试是否显示控制台窗口,true即显示控制台

    详细说明: Github中关于launch.json文件的说明

    c_cpp_properties.json

    { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "D:/opencv/build/include",//这里引入opencv源文件路径,下面两个地址都是 "D:/opencv/build/include/opencv", "D:/opencv/build/include/opencv2" ], "defines": [ "_DEBUG", "UNICODE", "_UNICODE" ], //"compilerPath": "C:\\MinGW\\mingw64\\bin\\gcc.exe", "compilerPath": "/usr/bin/clang", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "clang-x64" } ], "version": 4 }

    C++远程调试

    主要讲C++远程调试,也是我从事开发的主要语言,同时Shell、Python等也会顺带讲一讲。

    点击拓展商店—>输入 C++ —>选择图中第一个安装—>重新加载 ;

    点击左侧调试的小虫虫按钮—>配置小齿轮,下面附上我的配置(基本满足90%人的需求)。

    { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "(gdb) Attach", "type": "cppdbg", "request": "attach", "program": "${workspaceFolder}/bin/app ", "processId": "${command:pickProcess}", "MIMode": "gdb", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "Enable print elements", "text": "-interpreter-exec console \"set print elements 0\"", "ignoreFailures": true } ] }, { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/bin/app ", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "gdb", "miDebuggerArgs": "gdb", "linux": { "MIMode": "gdb", "miDebuggerPath": "/usr/local/onlinenavi/bin/gdb", "miDebuggerServerAddress": "IP:PORT", }, "logging": { "moduleLoad": false, "engineLogging": false, "trace": false }, "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "Enable print elements", "text": "-interpreter-exec console \"set print elements 0\"", "ignoreFailures": true } ] } ] }

    以上配置根据自己环境稍微修改,launch配置需要服务端提前开启gdbsever,详细使用请自行查阅。

    远程安装gdb和gdbserver

    Attach配置可以自动attach上已有进程,Fn + F5 / F5 启动调试。

    调试效果

    Python调试

    下载Python调试插件

    Python调试配置

    以上操作后可进行远程调试。

    Shell调试

    下载Shell调试支持

    Shell调试配置

    调试效果

    Git管理

    VS Code自带Git图形化管理

    提交commit,push一气呵成,可以打造快捷键,给你们看一下我的快捷键:左下角设置—>键盘快捷方式—>搜索Git,加号暂存,撤销,command + enter提交commit,shift + command + enter 提交push,快到飞起,爽到爆炸!

    Gitlens及效果图

    让git blame更清爽直观

    Git Graph及效果图

    还记得乌龟Git么,多少换用Mac的人多次去寻找小乌龟,最后无奈放弃,我送给你了,记得好评,么么哒!

    Vim

    合格的程序员,Vim情怀不能丢!

    Docker开发

    数据库MySQL开发

    gdb拓展

    把以下配置添加到.gdbinit中,让VS Code实现更好的调试效果

    https://stackoverflow.com/questions/11606048/how-to-pretty-print-stl-containers-in-gdb

    定制化终端

    https://www.cnblogs.com/soyxiaobi/p/9695931.html

    有一些只在item2中生效,请自行筛选。

    选择zsh为默认终端

    如果设置了字体,还需要添加 "terminal.integrated.fontFamily": "Meslo LG M for Powerline"

    此时该定制的终端也是非常强大,相信即便不打造这个IDE你也是愿意放下你的情怀一起动手配置。

    程序员少不了刷题,LeetCode给你准备好了

    安装LeetCode插件

    搜索题目

    就连刷题这么枯燥的事也可以这么酷,忍不住,别控制,情不自禁刷他个几千题。

    VS Code在前端程序员用的较多,后端服务端还没有跟上节奏,我来带个节奏,大家一起交流!还有好多拓展,我的配置也不在这里一一赘述了,以上足以解决大家的痛点。

    总之,炫酷的全能IDE已经呈现在面前,是不是干货满满呢!欢迎相互交流!

    最后附上我的插件List

    行间距

    # 设置行距 "editor.lineHeight": 0

    颜色主题

    Dainty Mayukai Andromeda One Dark Pro Horizon

    markdown实时预览

    Markdown Preview Enhanced

    参考链接: https://blog.csdn.net/amap_tech/article/details/104013481 https://www.jianshu.com/p/7c6599f21052

    Processed: 0.012, SQL: 9