使用VSCode环境编程的一些注意事项
文章目录
VSCode由于插件众多,支持的语言也非常多,是越来越好用,越来越火。有一款插件叫Code Runner支持VSCode下一键运行各种语言,非常好用,但笔者在使用过程中遇到一些问题,需要修改配置才能正常使用,这里作一个记录:
一、Go语言
1. 使用Code Runner运行
Go语言的包管理是以目录界限的,一个目录中只允许一个包,但允许有多个文件共属这个包。比如Go目录下有两个文件:main.go和util.go,它们的内容如下: main.go
1package main
2
3func main() {
4 println("你好,世界!")
5 gotest()
6}
util.go
1package main
2
3func gotest() {
4 println("调用gotest")
5}
我们在main.go文件中点右键运行Run Code会出现找不到函数定义的错误:
这是因为Code Runner默认的运行命令是:go run 加当前文件,如上图。由于main.go使用了util中的函数,但util.go并未自动载入。我们可以在终端中试试把util.go加上。
正常输出了,这种方法适合文件数量比较少的情况,而且Code Runner不方便直接指定文件名。 还有一种方法就直接使用当前目录:.
修改CodeRunner的配置:
把go的配置改为:
1cd $dir && go run .
现在运行Code Runner就正常了。
也许我们的项目不在${GOPATH}目录下,而是任意一个目录,项目中有多个包(多个子目录),Code Runner也能够正常运行,只要在代码中import了,比如项目中有一个test包,import方式为加上"./“路径,如:
2. 关于提示
在编码过程中也许不会出现我们希望的提示,可以在设置中勾中“Autocomplete Unimported Packages”
二、Python语言
1.使用Code Runner运行
Python目前的两大版本Python2与Python3都还在维护,一些系统还默认安装的是Python2,但Python2很快就会结束支持了,所以建议大家都还是使用Python3,同时Python3对UTF8的支持也比较好一些,比如下面的代码:
1def main():
2 print("你好,世界!")
3
4if __name__ == "__main__":
5 main()
在笔者的Mac中直接使用Code Runner运行的话会出现错误:
那里因为系统默认的Python是Python2。 按Go语言中的方式修改Code Runner配置,改为python3,前提是安装了Python3
1python3 -u
如果还是不能正常输出中文,可以添加环境变量:
- Mac下如果是使用的bash则在用户目录的.bash_profile中添加
1export PYTHONIOENCODING=utf-8
如果是使用的zsh,则使用:
1vi ~/.zshrc
在其中添加上面的变量。
- Linux中一般使用的是Bash,跟Mac下的Bash添加方法一样
- Windows 在“控制面板”/“系统”/“高级系统设置”/“环境变量”中添加,可以添加用户变量也可以添加系统变量。
2.格式化
在VSCode中编写Python时,使用格式化功能,需要安装Autopep8。该工具默认在格式化时会将Tab缩进改为空格。但是有时我们更希望使用Tab缩进而不是空格,可以在VSCode中设置:
如上图,添加:
1--ignore=W191,E101,E111
三、C/C++
1. 代码格式化
在设置中如图设置,注意Clang_format_path需要填写完整路径,格式化风格可以使用多种风格,看各人习惯或者各公司情况设置。
如果有什么问题格式化失败,VSCode会在右下角给出提示:
此时可以在输出窗口选择C/C++查看问题。
2. Code Runner编译运行问题
- Windows使用Clang的问题
Code Runner默认使用gcc编译C程序,g++编译c++程序,如果是希望使用Clang进行编译,只需要将settings.json中的"code-runner.executorMap"中c/c++的配置命令改为clang/clang++即可。
但是在Windows下还有点问题,就是使用Clang生成的文件没.exe后缀。无法正常执行。需要在如图所示添加后缀.exe
- 多文件问题
如果项目中main函数所在目录有多个C/C++文件,也可以使用Code Runner一键编译运行,只需要把前面的C/C++中的$fileName改为通配符即可。
1"c": "cd $dir && clang *.c -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
2"cpp": "cd $dir && clang++ *.cpp -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
注意: 如果想C/C++混合使用,可以尝试再改为:
1"c": "cd $dir && clang *.c *.cpp -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
2"cpp": "cd $dir && clang++ *.c *.cpp -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
- 如果main函数所在文件是一个c文件,引用了C++文件函数,可能会出现链接问题
- 而如果main函数所在文件是一个C++文件,引用C文件函数,则会出现一个警告,强制把C文件作为C++文件来处理。
1clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated [-Wdeprecated]
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2020/2020-07-11-使用VSCode环境编程的一些注意事项/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。