虽然本文是以VsCode的名义,但实际上引入了两个工件, Vscode和Vim,两者结合起来提高了开发效率!
我以前接触过VsCode,但很少使用。总觉得写Python没有pycharm香,还要安装各种插件。但是在最近的实践中发现,项目中有一些比较大的推荐架构项目,都是C代码,后期架构开发要基于项目代码来做,这就是涉及到了写C++项目,而且好几个项目一块看,还要满足互相跳转,,因为有些变量可能是继承的父项目中定义的。
然后我回到VSCode,发现它相当容易使用,而且插件功能强大。只用VSCode这一款编译器,安装不同的插件就可以开发不同的项目,比如C++, Java(Scala)和Python项目, 并且还免费。的这篇文章梳理了如何使用VsCode编写这三个项目,关键是如何配置它们。因为VsCode本质上是一个类似于记事本的编辑器,它需要各种插件和环境来帮助它运行。
01 VsCode必备的基础知识
1.1 两个必备快捷键
关于什么是VsCode,安装是安装软件的常规操作。下载后打开,就是英文版。可以打开扩展搜索中文安装中文包。界面如下图:所示。
先记住两个快捷键:
Command shift p:这是打开命令交互面板,在这里可以输入命令进行搜索(中文和英文),然后执行。可以在命名面板中执行各种命令,包括编辑器和插件提供的功能。Comand,进入设置,在这里可以设置用户和工作区,比如什么代码样式和字体样式都在这里设置。建议记住这两个快捷键。
此外,这些常用的快捷方式最好称为:
1.2 安装code
安装完成后,打开命名面板Command Shift P,搜索shell命令,在PAth中点击命令安装代码,然后点击上面菜单栏中的terminal打开新的terminal。使用代码命令在此打开文件或文件夹。
代码项目地址或文件名# vscode将在新窗口中打开项目或文件。如果想在已经打开的窗口中打开文件,可以使用-r参数,也可以菜单栏打开文件,打开项目,但是感觉还是有点麻烦。
1.3 连接远程服务器开发
也是需要掌握的必备技能。毕竟我们本地的机器都知道配置什么,项目也经常放在服务器上,保证了在我们自己的电脑上远程打开服务器并进行开发的项目。
需要安装插件Remote-SSH,命令shift x打开安装。安装完成后,点击左下角绿色的地方,然后选择连接到主机,输入要添加的IP和用户名,从而链接到远程服务器。
00-1010如果在vs代码上安装了vim插件,就可以使用vim进行代码编写,各种便捷的命令让开发更加高效。搜索vim插件,然后点击vim插件,就会看到vim插件的安装说明。在安装说明中,在命令行的第一行执行:
默认值写入com.microsoft.VSC
ode 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相关操作,等具体用到了再补充。
ok, 几个必备知识搞定之后, 就可以开发项目了, 其它功能等用到了可以现查。
02 VsCode写三大编程项目的相关配置
2.1 VsCode写C++项目的配置
这里记录C++项目开发的相关配置,先安装3个插件:
- C/C++
- C/C++ Extension Pack
- CodeLLDB
然后检查下是否按照了clang/clang++ 编译器
clang++ -v
如果未安装,请前往 app store 下载 xcode安装。
准备工作完成,然后打开终端输入下面命令:
mkdir projectscd projectsmkdir hellocd hellocode .# 上述步骤也可以在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++文件。
- 交互面板,输入task
- 选择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
- 选择LLDB
- 在.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/"mainmain.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.
这个卡了我好久其实, 上面文章中是没有写的, 这个原因解决方法可能有两个:
- 看看插件里面是否安装了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 projectscd projectsmkdir hellocd hellocode .
这时候会建立一个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」;
- 下载并运行「JDK」;
- 配置「Environment Variable」
第一步,安装Extension Pack for Java插件, command+shift+x然后输入这个插件名字, 点击安装。
这哥们其实在为我们安装了6个Java必备插件:
- Language Support for Java(TM) by Red Hat: 运行Java代码
- Debugger for Java: 调试
- Java Test Runner: 单元测试
- 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模式(写代码模式)
- i/a键:当前位置插入
- A键: 行尾插入
- I键: 行前插入
- O键: 上行插入
- o键: 下行插入
反之jj键或者esc键 - 从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常用操作就是这些了, 如果再遇到新的,会继续补充。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/41951.html