关键词: U盘写Hexo博客 | U盘编译C/C++ | U盘编译Python
支持 node.jsHexoGitPythonMinGW
在 Hexo + C++ 便携套装 里,介绍了将 VS Code portable 化的基础思路
经过改进,将该功能改的更加完美
准备工作
由于需要的文件过大,不提供直接下载,请根据思路自行配置自己需要的部分
获取需要的文件
首先,可以得知,类似 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.js和Git
编译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 解决


中文博客导航
萌ICP备20213456号