本篇文章虽然是 VS Code 挂名,但其实介绍了两款神器: VS Code 和 Vim, 这两个结合起来,开发效率蹭蹭蹭!!!
之前 接触过 VS Code 但很少用。总感觉写 Python 不如 pycharm 香,还得安装各种插件。但最近实习中,发现在项目上有一些较为庞大的推荐架构项目,全是 c++ 代码,后期还要基于项目代码做架构开发,这就 涉及到了写 C++ 项目,而且好几个项目一块看,还要满足互相跳转, 因为有些变量的定义可能在继承的父类项目里面 。
于是就又接触回 VSCode, 发现还挺好用,并且插件强大, 只用 V SCode 这一款编译器,安装不同的插件就可以开发不同的项目,比如 C++, Java (Scala) 和 Python 项目,并且还免费。 这篇文章来整理下如何用 VS Code 来写这三种项目,关键是如何进行配置。 因为 VS Code 本质上是一个类似于记事本的编辑器,需要各种插件和环境辅助运行。
大纲如下:
▲这就满足!大家有想看的内容都可以留言
Ok, let's go!
01 VSCode 必备的基础知识 1.1 两个必备快捷键 关于 VS Code 是啥,安装就是常规的安装软件操作。下载下来之后,打开,是英文版,可以打开扩展, 搜 Chinese 安装中文包, 界面如下图: 先记住两个快捷键:
command+shift+p
: 这个是打开命令交互面板, 在命令面板中可以输入命令进行搜索 (中英文都可以),然后执行。命名面板中可以执行各种命令,包括编辑器自带的功能和插件提供的功能。comand+,
: 进入设置,这里可以进行用户和工作区的设置,像什么代码风格,字体风格各种设置都在这里这两个快捷键建议记好。
另外, 这几个常用的快捷键最好也知道:
1.2 安装 code 安装后打开命名面板 Command+Shift+P
, 搜索 shell 命令,点击在 PAth 中安装 code 命令,然后在上面菜单栏里面点击终端,开启一个新终端。在这里面使用 code 命令打开文件或文件夹
code 项目地址或者文件名 # vscode 就会在新窗口中打开该项目或者文件
如果你希望在已经打开的窗口打开文件,可以使用 -r
参数, 当然也可以菜单栏文件然后 open 项目,但感觉还是有些麻烦。
1.3 连接远程服务器开发 这个也是需要掌握的必备技能了, 毕竟我们本地的机器啥配置自己清楚, 项目往往都放到服务器上, 而这个就保证了在自己电脑上远程打开服务器的项目并开发。
这个需要安装插件 Remote-SSH, command+shift+x 打开安装。安装完了之后,左下角绿色的地方点击,然后选择 connect to host,输入 IP 和用户名添加即可, 这样就链接到了远程服务器。
1.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 下简直神器。
1.5 配置 Git 这个功能我目前没用到, 因为我一般喜欢命令行直接 Git 相关操作,等具体用到了再补充。可以先参考 https://blog.csdn.net/weixin_42280089/article/details/88937175
ok, 几个必备知识搞定之后, 就可以开发项目了, 其它功能等用到了可以现查。
02 VsCode 写三大编程项目的相关配置 2.1 VsCode 写 C++ 项目的配置 这里记录 C++ 项目开发的相关配置,先安装 3 个插件:
然后检查下是否按照了 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++ 文件。
选择 tasks: Configure Default Build Task 选择 Create tasks.json file from template 选择 Others, 会在.vscode 下面自动创建 tasks.json,在编辑器中打开 { "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指正在打开的文件 "-o" , // 生成可执行文件 "${fileDirname}/${fileBasenameNoExtension}" // fileDirname指正在打开的文件所在的文件夹 // fileBasenammeNoExtension指没有扩展名的文件,unix中可执行文件属于此类 ], "options" : { "cwd" : "${workspaceFolder}" }, "problemMatcher" : ["$gcc" ], "group" : { "kind" : "build" , "isDefault" : true } } ] }
这里面需要注意的是第一个 label,后面的名字,要和下面这个配置文件名字最后一项保持一致。可行性文件这个保存的是路径位置。
接下来, 配置 launch.json, 这个是用于使用 vscode 自带的 debug 工具(左侧的小虫图标)
交互面板下输入 launch,选择 Debug:Open launch.json 在.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 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.
这个卡了我好久其实, 上面文章中是没有写的, 这个原因解决方法可能有两个:
看看插件里面是否安装了 C/C++ Clang Command Adapter, 有的话卸载掉, 这个对我这个没有用 进设置,搜 Run Code Configuration, 打开 setting.json 文件, 那里面会有各类语言的执行 map, 在里面找到 cpp, 把后面的 value 改成:"cpp": cd $dir && g++ -std=c++11 $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt
, 我用了这个方法解决的 至此, c++ 部分结束。
2.2 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 代码,我这里可以选择第一个。
左下角就变了环境。
2.3 VSCode 写 Java 项目的配置 想运行 Java 项目, 也非常简单,主要包括三步:
下载并运行「Extension Pack for Java」; 第一 步,安装 Extension Pack for Java 插件 , command+shift+x
然后输入这个插件名字, 点击安装。
这哥们其实在为我们安装了 6 个 Java 必备插件:
Language Support for Java (TM) by Red Hat: 运行 Java 代码 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, 项目学习起来也是非常香的哈哈。
03 Vim 使用小记 由于目前我对 Vim 也是只了解到了些皮毛, 所以只整理些关于 vim 常用的操作。
3.1 三种模式切换 首先,三种模式切换必备:
从 Normal 模式到 Insert 模式 (写代码模式)
从 Normal 模式到命令行模式, ":"
, 反之 esc, 命令行里面输入:行号
,直接跳到相应行
从 Normal 模式到 visual 模式, v
键, 反之 esc, 这个模式类似于我们用鼠标选中文本的操作。
v
: 字符可视化模式,此模式下目标文本的选择是以字符为单位的,也就是说,该模式下要一个字符一个字符的选中要操作的文本。V
: 行可视化模式,此模式化目标文本的选择是以行为单位的,也就是说,该模式化可以一行一行的选中要操作的文本Ctrl+v
: 块可视化模式,该模式下可以选中文本中的一个矩形区域作为目标文本,以按下 Ctrl+v 位置作为矩形的一角,光标移动的终点位置作为它的对角visual 模式下面复制粘贴操作等都能使用。
3.2 必备命令 刚开始进入 vim 的时候是 Normal 模式,这个模式下是不能写代码的, 在这个模式下需要记住的操作:
字符跳 :控制光标移动: H, J, K, l
四个键分别是左, 下,上, 右,这个是一个字符一个字符的跳单词跳 :w
: 一个单词一个单词的跳 ,b
: 一个单词一个单词的往回跳, 在前面加 n
可以跳 n 个单词。文件首尾 :G
跳到文件末尾, gg
跳到文件开头,nG
跳到第 n 行删除文本 : x
删除当前字符,dd
删除当前行, cc
键删除当前行并自动进入 Insert 模式,ndd
删除当前及后面的 n 行, D
删除光标到末尾的元素,:a,bd
删除 a-b 行文本内容查找和替换
:/查找内容
进行查找,:g/a1/a2/g
将文本中所有的 a1 用 a2 替换。复制和粘贴 :y
复制当前字符, yy
复制当前行, nyy
复制 n 行, p
粘贴撤销与反撤销 : u
撤销一次,U
撤销对该行文本做的所有操作, ctrl+r
反撤销一次保存退出 : q
直接退出, wq
保存退出, w
保存但不退出, 后面加 !
强制的意思。"w!"
和 "wq!"
等类似的指令,通常用于对文件没有写权限的时候(显示 readonly),但如果你是文件的所有者或者 root 用户,就可以强制执行。3.3 Vim 多窗口编辑 编辑文件的时候,可能参考另一个文件,如果两个文件切换比较繁琐,可以 Vim 同时打开两个文件。
命令行输入:vs第二个文件目录
, 回车, 此时垂直切分成两个窗口。Ctrl+ww
进行两个窗口的切换。
3.4 Vim 批量注释 这个也是非常常用的,不操作鼠标,直接通过命令来
连续行注释: :1,10s/^/#/g
1-10 行行首加 "#" 注释,^
表示行首, g
表示执行替换时不询问确认。如果是取消, 1,10s/^#//g
c++ 和 Java 的注释用到 //, 此时需要转义。1,10s/^/\/\//g
注释 1-10 行 是否显示行号: set nu
与 set nonu
目前我用到的 Vim 常用操作就是这些了, 如果再遇到新的,会继续补充。
重磅! Python 交流 群 已成立
为了给小伙伴们提供一个互相交流的技术平台,特地开通了 Python交流群。 群里有不少技术大神,不时会分享一些技术要点,更有一些资源收藏爱好者不时分享一些优质的学习资料。 (免费,不卖课!)
▲长按扫码