Vscode编辑器:python, C++和Java等项目开发的集大成者(yyds)

1. 写在前面

已经好久没有写博客了,不知不觉有点手生, 现在开始恢复博客的更新频率, 作为恢复的第一篇, 想从实习期间学到的新工具使用入手, 本篇文章虽然是Vscode挂名,但其实想介绍两款神器: Vscode和Vim, 这两个结合起来,开发效率会蹭蹭蹭!!!

VsCode的使用,这个是我这两天刚接触的,之前也接触过, 写Python项目的时候,就接触过这个编辑器,但总感觉不如pycharm写Python项目香, 还得安装各种插件好复杂的样子。 而最近在项目上需要阅读一些较为庞大的推荐架构项目,全是cpp代码,并且后期还要基于项目代码做一些推荐架构开发工作,这就涉及到了写C++项目。 一开始读代码感觉JetBrains的全家桶中Clion挺好,并且和pycharm一样的风格,用起来也比较顺手。 结果发现这玩意有个弊端,就是不同项目之间没法跳转, 对于项目代码阅读不友好。这里说的是不同项目之间,Clion在一个项目内部是可以和pycharm一样跳的, 但一般我们下载一个cpp项目, 往往需要进行编译,此时会把所用到的依赖都下载下来,这时候就往往有一些继承性的项目被下载到。 我们读的时候呢?可能需要好几个项目一块看,并且希望能互相跳转, 因为有些变量的定义可能在继承的父类项目里面。 这个在Clion里面没找到好的方式,还得手动来回切换太麻烦。

于是就又接触回VSCode, 花了一下午时间完成C++配置相关工作,并学习了一些提高开发效率的知识,发现还挺好用的,并且插件非常强大,可以只用这一款编译器,安装不同的插件就可以开发不同的项目,比如C++, Java(Scala)和Python项目, 并且还免费, 由于我目前最常用的语言就是这三种,涉及的项目也是这三种。 所以呢? 这里打算写一篇文章来整理下如何用VsCode来写这三种项目,关键是如何进行配置(后续再遇到其它语言的项目,继续补充),因为VsCode本质上其实就是一个类似于记事本的编辑器, 如果没有各种插件和环境辅助,那就只能写写代码且无法运行,所以如果想开发各种项目,得事先需要配置才行。

由于我对这东西,也就刚摸索了一下午的时间, 所以学到了多少,整理多少,后面如果再学到新的操作,会在这篇文章继续补充。 我也是参考了人家很多文章之后才敢总结,我下面的操作都是在Mac上亲自走了一遍, 把坑趟完了。

大纲如下

  • VsCode基础小常识(两个快捷键, 连接远程服务器,配置vim, 配置Git)
  • VsCode写C++项目的相关配置
  • VsCode写Python项目的相关配置
  • VsCode写Java项目的相关配置
  • Vim的使用

Ok, let’s go!

2. VsCode必备的基础知识

2.1 两个必备快捷键

关于VsCode是啥,具体怎么安装这里不会整理, 官网下载,常规的安装软件操作。下载下来之后,打开,是英文版,可以打开扩展, 搜Chinese安装中文包, 界面如下图:
在这里插入图片描述
先记住两个快捷键:

  1. command+shift+p: 这个是打开命令交互面板, 在命令面板中可以输入命令进行搜索(中英文都可以),然后执行。命名面板中可以执行各种命令,包括编辑器自带的功能和插件提供的功能。
    在这里插入图片描述
  2. comand+,: 进入设置,这里可以进行用户和工作区的设置,像什么代码风格,字体风格各种设置都在这里

    在这里插入图片描述

这两个快捷键建议记好。

另外, 这几个常用的快捷键最好也知道:
在这里插入图片描述

2.2 安装code

安装后打开命名面板Command+Shift+P,搜索shell命令,点击在PAth中安装code命令,然后在上面菜单栏里面点击终端,开启一个新终端。 在这里面使用code命令打开文件或文件夹

code 项目地址或者文件名  # vscode 就会在新窗口中打开该项目或者文件

如果你希望在已经打开的窗口打开文件,可以使用-r参数, 当然也可以菜单栏文件然后open项目,但感觉还是有些麻烦。

2.3 连接远程服务器开发

这个也是需要掌握的必备技能了, 毕竟我们本地的机器啥配置自己清楚, 项目往往都放到服务器上, 而这个就保证了在自己电脑上远程打开服务器的项目并开发。

这个需要安装插件Remote-SSH, command+shift+x打开安装。 安装完了之后,左下角绿色的地方点击,然后选择connect to host,输入IP和用户名添加即可, 这样就链接到了远程服务器。
在这里插入图片描述

2.4 安装Vim,使得开发更高效

如果vs code上安装vim插件,那么写代码就可以采用vim的方式了, 各种便捷式命令使得开发更加高效。 插件搜vim安装,然后点击vim插件,就会看到vim插件的安装说明, 在安装说明里面把第一行在命令行执行:

defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool false

然后需要在setting.json中把vim的配置复制进去即可, 这样就变成了vim编辑器, 然后就能进行vim的各种骚操作了。setting.json文件在哪里? command+,进入设置, 然后上面搜索框输入: Run Code Configuration, 在查找的结果中,如果发现setting.json编辑即可。

在这里插入图片描述
下面那段拷贝到setting.json中, 这样就会发现进入了vim编辑模式。常用的vim命令还是要会的, 开发更加高效。 这个统一整理到最后面, 借着这次,顺便也复习下Vim的使用, Linux下简直神器。

2.5 配置Git

这个功能我目前没用到, 因为我一般喜欢命令行直接Git相关操作,等具体用到了再补充。可以先参考这篇博文

ok, 几个必备知识搞定之后, 就可以开发项目了, 其它功能等用到了可以现查。

2.6 几个好用的插件记录

这里记录下常用的几个好用插件(ctrl+shift+x 搜索安装即可)

  • Python extension for Visual Studio Code: python扩展包, 很多python代码的增强功能,代码分析,高亮,规范化
  • Python Snippets: 内置了很多代码片段
  • Python Type Hint: 对类型提供自动提示功能
  • LiveCode: 实时展示变量值,并检测print进行打印
  • Better Comments:写注释的插件, 支持# todo语法高量等
  • autoDocstring: 自动生成函数注释格式,写函数注释很方便
  • Code Spell Checker: 单词拼写检查
  • vscode-icon: 不同的文件展示不同的图标,方便快速识别文件类型
  • Rainbow Brackets: 不同括号用不同颜色显示
  • codeTime: 监控和统计写代码的时间
  • gitLens和githistory: 查看提交记录,显示提交作者信息和修改信息(必备)
  • jupyter: 支持jupyter,快速测试代码, ctrl+shift+p, 调出命令行,然后输入jupyter 可以新建笔记本文件

3. VsCode写C++项目的相关配置

这里记录C++项目开发的相关配置, 参考这篇文章

先安装3个插件:

  • C/C++
  • C/C++ Extension Pack
  • CodeLLDB

然后检查下是否按照了clang/clang++ 编译器

clang++ -v

如果未安装,请前往 app store 下载 xcode安装。

准备工作完成,然后打开终端输入下面命令:

mkdir projects
cd projects
mkdir hello
cd hello
code .

# 上述步骤也可以在vscode中创建一个新的hello文件夹代替。

接下来,设置编译器路径, 交互面板下, 输入c/c++选下面这个UI的:
在这里插入图片描述
采用默认即可,这里编译器我选了个clang++, 也可以默认。这样完事之后, .vscode目录下,自动多一个c_cpp_properties.json文件, 用于使用vscode自带的代码提示工具,支持代码跳转等, 在这里面进行配置如下:

{
    "configurations": [
        {
            "name": "Mac",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "macFrameworkPath": [],
            "compilerPath": "/usr/bin/clang++",
            "cStandard": "gnu17",
            "intelliSenseMode": "macos-gcc-x64",
            "cppStandard": "c++11"
        }
    ],
    "version": 4
}

这个完事。

接下来, 需要配置一个tasks.json文件, 用于编译c++文件。

  1. 交互面板,输入task
  2. 选择tasks: Configure Default Build Task
  3. 选择Create tasks.json file from template
  4. 选择Others, 会在.vscode下面自动创建tasks.json,在编辑器中打开
  5. 进行如下配置
{
    "version": "2.0.0",
    "tasks": [
      {
        "label": "Build with Clang", //这个任务的名字在launch.json最后一项配置
        "type": "shell",
        "command": "clang++",
        "args": [
          "-std=c++17",
          "-stdlib=libc++",
          "-g",
          // 生成调试信息,GUN可使用该参数
          "${file}",
          // file指正在打开的文件   如果是多文件编程,这里的${file}改成${filename}\\*.cpp
          "-o",
          // 生成可执行文件
          "${fileDirname}/${fileBasenameNoExtension}"
          // fileDirname指正在打开的文件所在的文件夹
          // fileBasenammeNoExtension指没有扩展名的文件,unix中可执行文件属于此类
        ],
        "options": {
          "cwd": "${workspaceFolder}"
        },
        "problemMatcher": ["$gcc"],
        "group": {
          "kind": "build",
          "isDefault": true
        }
      }
    ]
  }
  

这里面需要注意的是第一个label,后面的名字,要和下面这个配置文件名字最后一项一致。 可行性文件这个保存的是路径位置。

接下来, 配置launch.json, 这个是用于使用vscode自带的debug工具(左侧的小虫图标)

  1. 交互面板下输入launch,选择Debug:Open launch.json
  2. 选择LLDB
  3. 在.vscode下自动生成launch.json文件, 写入配置
{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "Debug",
            "type": "lldb",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}",
            "args": [],
            "cwd": "${workspaceFolder}",
            "preLaunchTask": "Build with Clang"
        }
    ]
}

这样,配置工作完成, 就可以写程序代码了。 在该项目下面建立一个helloworld.cpp文件,写入如下代码:

在这里插入图片描述
然后command+shift+b就可以进行编译,然后点击右上角的执行按钮即可运行程序了。注意,如果改变helloworld.cpp的位置,比如新建个src目录, 把这个cpp放入src目录,此时上面的task.json和launch.json相应位置需要做出改变。

# task.json
// 生成可执行文件
"${fileDirname}/src/${fileBasenameNoExtension}"

# launch.json
"program": "${workspaceFolder}/src/${fileBasenameNoExtension}",

如果想debug, 就点击左边的小虫子图标, 然后打断点, 在左上角再点击绿色箭头,就进入debug模式了。
在这里插入图片描述
到这里为止, C++环境配置完成。

在运行过程中,我其实遇到了一个c++11的bug

[Running] cd "/Users/bytedance/projects/hello/" && g++ main.cpp -o main && "/Users/bytedance/projects/hello/"main
main.cpp:9:21: error: expected ';' at end of declaration
  vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
                    ^
                    ;
main.cpp:11:27: warning: range-based for loop is a C++11 extension [-Wc++11-extensions]
  for (const string& word : msg)
                          ^
1 warning and 1 error generated.

这个卡了我好久其实, 上面文章中是没有写的, 这个原因解决方法可能有两个:

  1. 看看插件里面是否安装了C/C++ Clang Command Adapter, 有的话卸载掉, 这个对我这个没有用
  2. 进设置,搜Run Code Configuration, 打开setting.json文件, 那里面会有各类语言的执行map, 在里面找到cpp, 把后面的value改成:"cpp": cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt, 我用了这个方法解决的

至此, c++环境配置完成。

有小伙伴反映说,有没有Windows的配置啊? 下面这个是Windows的配置过程, 我在我电脑上走了一遍, 也整理下。参考的这篇文章

  1. 首先,在Windows上线安装编译器, 这里我用的MinGW-w64, 直接在这里下载安装包,然后解压到C:\下面。即C:\mingw64目录。
  2. 然后,把上面目录里面的bin文件加入到环境变量里面去,这时候, 打开命令行,输入g++ --version,就能看到对应版本,说明安装成功。
    在这里插入图片描述

这样, 编译器安装完成,下面在vscode进行配置,依然是上面那三个文件, 这里的布局模式和上面一样:
在这里插入图片描述
这里和上面不一样的,就是这三个配置文件内部的内容, 我这里的配置如下:

  • c_cpp_properites.json:

    {
        "configurations": [
            {
                "name": "Win32",
                "includePath": [
                    "${workspaceFolder}/**"
                ],
                "defines": [
                    "_DEBUG",
                    "UNICODE",
                    "_UNICODE"
                ],
                "compilerPath": "C:\\mingw64\\bin\\g++.exe",
                "cStandard": "c11",
                "cppStandard": "c++17",
                "intelliSenseMode": "clang-x86"
            }
        ],
        "version": 4
    }
    
  • task.json:

    {
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "label": "g++.exe build active file",
                "type": "shell",
                "command": "C:\\mingw64\\bin\\g++.exe",
                "args": [
                    "-g",
                    "${file}",  // 如果是多文件编程, 这里的${file}改成${filename}\\*.cpp
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "options": {
                    "cwd": "C:\\mingw64\\bin"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": "build"
            },
            {
                "type": "shell",
                "label": "C/C++: g++.exe build active file",
                "command": "C:\\mingw64\\bin\\g++.exe",
                "args": [
                    "-g",
                    "${file}",
                    "-o",
                    "${fileDirname}\\${fileBasenameNoExtension}.exe"
                ],
                "options": {
                    "cwd": "C:\\mingw64\\bin"
                },
                "problemMatcher": [
                    "$gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                }
            }
        ]
    }
    
  • launch.json:

    {
        // 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": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                "preLaunchTask": "g++.exe build active file"
            }
        ]
    }
    

这里面比较关键的g++.exegdb.exe的路径位置。 其他的采用默认就好。

4. VsCode写Python项目的相关配置

写大项目还是建议pycharm, yyds, 而如果写一些小demon啥的, 可以使用vscode了,这个配置起来,写代码项目也非常方便, 配置Python环境, 相对简单。

首先,按照Python插件, command+shift+x, 然后搜Python即可安装插件。然后命令行输入命令:

mkdir projects
cd projects
mkdir hello
cd hello
code .

这时候会建立一个hello目录,如果提示code没有定义, 先安装code, 具体方法是command+shift+p, 然后在里面搜shell,就会显示这条命令,点击安装即可。

在hello里面,建立hello.py文件,这时候基于扩展左下角就会显示所用的Python版本, 这时候,其实就能简单运行.py文件了。比如打印个hello world。
在这里插入图片描述
但是如何建立大项目,写更加复杂的代码呢, 这里可以安装anaconda, 然后在里面建立虚拟环境,然后在vscode中指定,就可以写了。 点击左下角的Python3.8.2这里。
在这里插入图片描述
我这里有3个anaconda3的环境,我选Arkrec_env的这个, 这里面专门写tf相关代码的,也安装好了大部分常用的包,点击选择即可。如果想写pytorch代码,我这里可以选择第一个。
在这里插入图片描述
左下角就变了环境。

4. VsCode写Java项目的相关配置

想运行Java项目, 也非常简单,主要包括三步:

  1. 下载并运行「Extension Pack for Java」;
  2. 下载并运行「JDK」;
  3. 配置「Environment Variable」

首先,就是安装Extension Pack for Java插件, command+shift+x然后输入这个插件名字, 点击安装。

在这里插入图片描述

这哥们其实在为我们安装了6个Java必备插件:

  1. Language Support for Java™ by Red Hat: 运行Java代码
  2. Debugger for Java: 调试
  3. Java Test Runner: 单元测试
  4. Maven for Java: 在Java环境下构建应用程序的软件

安装完毕之后.

第二步,下载并运行「JDK」。「JDK」的全称是「Java Development Kit」,也就是中文所说的「Java开发套件」, 这个套件就是我们开发基于Java语言的软件所需要的一个工具包。 话不多说,直接操作。

command+shift+p进入命令窗口,搜索Java Overview, 在右侧Configure那里,点击Configure Java Runtime,通过VSCode默认的「AdoptOpenJDK」下载入口,选择我们需要下载的「JDK」和「JVM」的版本

在这里插入图片描述
点击Download进入下载页面。下载下这个pkg包之后,点击安装即可。这时候,Reload Window,然后点击上面的Installed JDKs, 就会发现安装的JDK路径以及版本。

在这里插入图片描述
第三步,配置「Environment Variable」,也就是中文所说的「环境变量」。command+,进入设置页面, 搜索中输入javahome, 然后点击

在这里插入图片描述
在这里吗, 把上面的那个JDK的路径复制过来即可。

这样就可以愉快的写Java代码了, 测试下, command+shift+p, 在里面输入Java: create Project,输入项目名,在src文件夹中,选择Run运行Java代码,控制台数据Hello World则为成功。

在这里插入图片描述
OK, Java配置完成。

这样下来, 就把Vscode打造成了能同时开发Python, C++以及Java项目的神器了, 当然, Vscode还能做更多语言的项目开发, 等后面具体用到了再整理吧, 这玩意辅助上Vim, 项目学习起来也是非常香的哈哈。

5. Vim使用小记

由于目前我对Vim也是只了解到了些皮毛, 所以只整理些关于vim常用的操作,记好这些操作,在实际写代码中还是有很大帮助的。

5.1 三种模式切换

首先,三种模式切换必备:
在这里插入图片描述

  • 从Normal模式到Insert模式(写代码模式),esc键从编辑模式退回到Normal模式
  • 从Normal模式到命令行模式, ":", 反之esc, 命令行里面输入:行号,直接跳到相应行
  • 从Normal模式到visual模式, v键, 反之esc, 这个模式类似于我们用鼠标选中文本的操作。
    • v: 字符可视化模式,此模式下目标文本的选择是以字符为单位的,也就是说,该模式下要一个字符一个字符的选中要操作的文本。
    • V: 行可视化模式,此模式化目标文本的选择是以行为单位的,也就是说,该模式化可以一行一行的选中要操作的文本
    • Ctrl+v: 块可视化模式,该模式下可以选中文本中的一个矩形区域作为目标文本,以按下 Ctrl+v 位置作为矩形的一角,光标移动的终点位置作为它的对角

visual模式下面复制粘贴操作等都能使用

5.2 必备命令

vim最常用的就是Normal模式, 关于文本编辑,有一些命令需要记住,这些命令我把他分成了几个维度来记忆。vim核心功能就是文本编辑,所以文本编辑的话,我们可以从增,删,改,查,复制,粘贴几个维度去学习一些常用的快捷键。

  • 光标移动(查)

    • 字符跳: 控制光标移动: h, j, k, l四个键分别是左, 下,上, 右, 这个是一个字符一个字符的跳, 多练习记住,就不用方向键了,熟悉之后贼高效。
    • 单词跳w(word): 一个单词一个单词的跳 ,b(back word): 一个单词一个单词的往回跳, 在前面加num可以跳num个单词, e跳到单词的尾部
    • 行尾行首$跳动当前行尾, ^跳到当前行首
    • 文件首尾G 跳到文件末尾, gg跳到文件开头, num+G跳到第num行
    • 括号匹配%跳到与之匹配的括号位置
  • 增(insert)

    • i/I键(Insert): 当前位置插入/行首插入
    • a/A键(append): 当前位置的下一个位置/行尾插入
    • o/O键(open a line): 下行插入/上行插入
  • 删(delete)

    • dd(delete): 删除当前行
    • dj: 删除当前行+下一行(中间还可以加num), d5j
    • dk: 当前行+上一行(中间还可以加num),比如d3k
    • dh: 删除左边字符, 可以加num
    • dl: 删除右边字符, 可以加num
    • daw: 删除当前单词
    • x: 删除当前字符
    • D删除光标到末尾的元素
  • 改(change)

    • caw: 修改当前单词
    • ct): 修改到)
  • 查(find)

    • fs: 查找当前行的s, 再使用,查找下一个s
    • /查找内容进行查找单词,n跳到下一个,:g/a1/a2/g将文本中所有的a1用a2替换。
  • 复制(yank)和粘贴(past)

    • y复制当前字符
    • yy复制当前行
    • yj: 复制当前行+下一行, 还可以加num, 其他方向键同理
    • p粘贴
  • 撤销(undo)与反撤销(redo):

    • u撤销一次, U撤销对该行文本做的所有操作
    • ctrl+r反撤销一次
  • 保存退出: q直接退出, wq保存退出, w保存但不退出, 后面加!强制的意思。"w!""wq!" 等类似的指令,通常用于对文件没有写权限的时候(显示 readonly),但如果你是文件的所有者或者 root 用户,就可以强制执行。

5.3 Vim多窗口编辑

编辑文件的时候,可能参考另一个文件,如果两个文件切换比较繁琐,可以Vim同时打开两个文件。

命令行输入:vs第二个文件目录, 回车, 此时垂直切分成两个窗口。 Ctrl+ww进行两个窗口的切换。

5.4 Vim批量注释

这个也是非常常用的,不操作鼠标,直接通过命令来

  • 连续行注释: :1,10s/^/#/g 1-10行行首加"#"注释, ^表示行首, g表示执行替换时不询问确认。如果是取消, 1,10s/^#//g
  • c++和Java的注释用到//, 此时需要转义。 1,10s/^/\/\//g 注释1-10行

是否显示行号: set nuset nonu
set mouse=r,此时可以进行选中复制到粘贴板

目前我用到的Vim常用操作就是这些了, 如果再遇到新的,会继续补充。

  • 17
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值