VS Code 便携环境配置

1308

关键词: U盘写Hexo博客 | U盘编译C/C++ | U盘编译Python
支持 node.jsHexoGitPythonMinGW


Hexo + C++ 便携套装 里,介绍了将 VS Code portable 化的基础思路
经过改进,将该功能改的更加完美

Github



准备工作


由于需要的文件过大,不提供直接下载,请根据思路自行配置自己需要的部分

获取需要的文件


首先,可以得知,类似 Git、MinGW 安装后,都是通过加入到环境变量里后,通过命令行调用的,因此我们完全可以通过将U盘路径加入到命令行里来实现在U盘配置自己的环境
从各个官网获取需要的程序,正常安装,然后将安装文件夹整个拷贝到U盘里,卸载电脑上的程序,我们就获得了文件的主体
(当然,如果能够直接下载 zip 更好,不过有个功能不太全)

目录结构


取得需要的文件后,目录如下:
  • Portable //主目录
  • Code //代码文件夹,一般可以将该文件夹整个备份到git上
  • Blog //博客文件夹
  • node_modules //hexo 主文件
  • Support //需要加到环境变量里的文件
  • Git //用来给VS Code提供git 同时Hexo也用得到
  • nodejs //Hexo需要
  • MinGW //编译C/C++需要
  • Python //写Python需要
  • ssh //备份的ssh,用来在其他电脑上连接git
  • VS Code //编辑器
  • resources
  • app
  • extensions //VS Code 插件文件夹



具体操作


Hexo的配置需要node.jsGit
编译C/C++需要MinGW

关于配置环境方面,各个部分是一样的,只举一种例子.
以 Hexo 为例,按照上面的部分下载完成后,放到该放的地方上.

Hexo



Portable\Code\Blog 文件夹里初始化 Hexo (如果没有安装 Hexo 组件,安装到这个文件夹里)
或者将自己已经有的博客文件拷贝进来也行

在博客主目录下写文件 portable\run.bat
set path=%path%;%cd%\Support\git\
set path=%path%;%cd%\Support\git\bin\

set path=%path%;%cd%\Support\nodejs\
set path=%path%;%cd%\Support\node_modules\npm\
set path=%path%;%cd%\Support\node_modules\npm\bin\

set path=%path%;%cd%\Support\MinGW\bin\
set path=%path%;%cd%\Support\MinGW\lib\
set path=%path%;%cd%\Support\MinGW\include\

set path=%path%;%cd%\Support\Python\

set path=%path%;%cd%\Support\cmder\

cd VS Code
start Code.exe ../Code
exit


这样u盘里的文件对于 VS Code 就被加到环境变量里了(仅对于VSCode和从VSCode启动的程序)
那么,理论上而言,剩下的就和正常的一样了
Ctrl + `调用VS Code里的控制台,通过这个控制台来写hexo的那些命令,或者通过这个控制台启动外部的控制台也行


编译  


编译需要安装相应的插件,先在VS Code里下好插件,到{USER}\.vscode\extensions里将插件移动到 \portable\VS Code\resources\app\extensions即可(插件列表里会消失,不过不影响使用)

Python的不需要配置
C/C++需要配置下

我这里用了两个不同的C/C++编译方式,使用VS Code的Debug和自己写的bat
tasks.json 里写了多个不同指令的任务,目测没有bug
以下给出配置

{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"launchOptionType": "Local", // 调试器启动类型,这里只能为Local
"targetArchitecture": "x86", // 生成目标架构,一般为x86或x64,可以为x86, arm, arm64, mips, x64, amd64, x86_64
"program": "${file}.exe", // 将要进行调试的程序的路径
"miDebuggerPath":"${cwd}\\..\\support\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"preLaunchTask": "g++"   // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
},
{
"name": "Python",
"type": "python",
"request": "launch",
"stopOnEntry": true,
"program": "${file}",
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit",
"RedirectOutput"
]
},
{
"name": "Python Console App",
"type": "python",
"request": "launch",
"stopOnEntry": true,
"program": "${file}",
"externalConsole": true,
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit"
]
},
{
"name": "Django",
"type": "python",
"request": "launch",
"stopOnEntry": true,
"program": "${workspaceRoot}/manage.py",
"args": [
"runserver",
"--noreload"
],
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit",
"RedirectOutput",
"DjangoDebugging"
]
},
{
"name": "Watson",
"type": "python",
"request": "launch",
"stopOnEntry": true,
"program": "${workspaceRoot}/console.py",
"args": [
"dev",
"runserver",
"--noreload=True"
],
"debugOptions": [
"WaitOnAbnormalExit",
"WaitOnNormalExit",
"RedirectOutput"
]
}
]
}


{
"version": "0.1.0",
"command": " ",//需要多个指令 因此留空 以下面的参数为指令
"isShellCommand": true,
"showOutput": "always",
"echoCommand": false,
"suppressTaskName": true,
"tasks": [
{
"taskName": "g++",
//"command": "g++",
"args": ["g++","-g","${file}","-o","${file}.exe"], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"taskName": "compile",
//"command": "compile.bat",
"args": ["compile.bat","${file}"], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"taskName": "echo",
"args": ["echo","${workspaceRoot}/.vscode/.clang-format"] // 编译命令参数
}
]
}


下面两个是我自己写的通过bat编译,运行完会自己暂停,并且会自动删除生成的exe
放在 code 文件夹里

@Echo off

echo Begin

set path=%path%;%cd%\..\Support\MinGW\bin\;%cd%\..\Support\MinGW\lib\;%cd%\..\Support\MinGW\include\

if exist %1.exe del %1.exe

g++ -g -Wall -std=c++11 %1 -o %1.exe

::if exist %1.exe %1.exe

if exist %1.exe start run.bat %1 /B /c

echo Finished


@Echo off
%1.exe
pause
del %1.exe
exit



另外 .vscode 里的 setting.json 是对该工作区有效的,因此相当于我们直接把配置文件放到了U盘里
不过键盘映射必须要在 {USER}\.vscode 目录
可以自己写一个bat自动拷贝键盘映射文件
另外ssh文件也可以这样实现

放在portable文件夹里

如下
copy /D /Y %cd%\Code\.vscode\keybindings.json %USERPROFILE%\AppData\Roaming\Code\User\keybindings.json
exit


copy /D /Y %USERPROFILE%\AppData\Roaming\Code\User\keybindings.json %cd%\Code\.vscode\keybindings.json
del %USERPROFILE%\AppData\Roaming\Code\User\keybindings.json
exit


copy /D /Y %USERPROFILE%\.ssh\id_rsa  %USERPROFILE%\.ssh\id_rsa.backup
copy /D /Y %USERPROFILE%\.ssh\id_rsa.pub %USERPROFILE%\.ssh\id_rsa.pub.backup

copy /D /Y %cd%\ssh\id_rsa %USERPROFILE%\.ssh\id_rsa
copy /D /Y %cd%\ssh\id_rsa.pub %USERPROFILE%\.ssh\id_rsa.pub


copy /D /Y %USERPROFILE%\.ssh\id_rsa.backup %USERPROFILE%\.ssh\id_rsa
copy /D /Y %USERPROFILE%\.ssh\id_rsa.pub.backup %USERPROFILE%\.ssh\id_rsa.pub

del %USERPROFILE%\.ssh\id_rsa.backup
del %USERPROFILE%\.ssh\id_rsa.pub.backup


Git


在有些电脑上,Git可能会由于ssh证书的问题无法连接

提示 error setting certificate verify locations

可以使用 git config --system http.sslverify false 解决
发布评论
  • 点击查看/关闭被识别为广告的评论