vscode相关配置
vscode安装配置
update: 2020-12-3
下载编译器,一般是用mingw-w64,可以选离线版安装包(x86_64-posix-seh
)、或者msys2附带(最新)。
接着,配置环境变量Path,讲mingw的bin目录添加进去,在cmd输入gcc -v
可以显示出gcc的版本,用于验证环境是否配置正确。
vscode拓展插件:
- C/C++:提供Debug和Format功能
- Code Runner:右键运行单文件,无法Debug
- Bracket Pair Colorizer 2:彩虹花括号
- One Dark Pro:好看的暗色主题
需要配置调试功能,则需要添加4个json文件。
vscode远程开发
update: 2020-12-12
在VScode中,使用ctrl+shift+x
快捷键打开插件搜索窗口,输入插件Remote Development
,并点击安装。
将本地密钥对的公钥内容复制到远程主机的~/.ssh/authorized_keys
文件中。
若没有~/.ssh
目录,先在远程主机执行一遍ssh localhost
,此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码,这样就登陆到本机了。
在VS code中,使用cmd+shift+p
快捷键打开命令输入窗口,输入Remote-SSH:Connect to Host...
,第一次使用时需要选择Add New SSH Host
配置一下,输入完成后选择第一个配置文件:xxx/.ssh/config
(xxx是省略的意思)。
把登录服务器的信息添加到配置文件.ssh/config
中的,该文件格式为:
Host alias
HostName host_id
User user_name
Port 22
alias
:该远程的命名HostName
:远程主机的IP地址User
:远程主机的用户名port
:远程主机的端口号,不填写的话,ssh默认端口号为22,如果要用其他端口号,可以在这里更改
远程端安装插件:
- C/C++:查看定义,跳转函数
- Code Runner:右键运行
解决Vscode提示code安装似乎损坏
update: 2020-12-8
原因:安装了一个叫background的拓展 解决:
- 下载一个叫
Fix VSCode Checksums
的拓展 ctrl+shift+P
打开命令面板- 输入
Fix Checksums: Apply
- 重启vscode
win10-VScode项目配置
update = 2022-07-21
launch.json:设置调试器,并通过preLaunchTask
选择编译器
下方配置中clang_lldb暂时用不了,缺少lldm-mi.exe
{
"version": "0.2.0",
"configurations": [
{
"name": "(clang_lldb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": true, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "lldb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
"miDebuggerPath": "C:/Program Files/LLVM/bin/lldb-mi.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile_clang++" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
},
{
"name": "(clang_gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": true, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
"miDebuggerPath": "gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile_clang++" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
},
{
"name": "(gcc_gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": true, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
"miDebuggerPath": "gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile_g++" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
},
]
}
task.json:编译器及编译选项设置 如果是在windows上使用clang 并且同时安装有vs和mingw, clang链接是会自动使用msvs, 链接时会有LINK error。解决方法是在clang++的编译选项中添加--target=x86_64-w64-mingw
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile_g++",
"command": "g++",
"args": [
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-g",
"-m64",
"-Wall",
"-static-libgcc",
"-fexec-charset=GBK"
],
"type": "process",
"group": {
"kind": "build",
"isDefault": false
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
},
"problemMatcher": "$gcc"
},
{
"type": "cppbuild",
"label": "Compile_clang++",
"command": "C:\\Program Files\\LLVM\\bin\\clang++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"--target=x86_64-w64-mingw",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
]
}
ref:
- https://www.cnblogs.com/nikiss/p/14208341.html
- https://code.visualstudio.com/docs/cpp/launch-json-reference
- https://blog.csdn.net/qq_21567385/article/details/122795215
Linux-VScode项目配置
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Compile_g++",
"command": "g++",
"args": [
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"-g",
"-O0",
"-m64",
"-Wall",
"-static-libgcc",
"-ltlpi"
// "-fexec-charset=GBK"
],
"type": "process",
"group": {
"kind": "build",
"isDefault": false
},
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared"
},
"problemMatcher": "$gcc"
},
{
"type": "cppbuild",
"label": "Compile_clang++",
"command": "C:\\Program Files\\LLVM\\bin\\clang++.exe",
"args": [
"-fdiagnostics-color=always",
"-g",
"--target=x86_64-w64-mingw",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
]
}
launch.json
// https://code.visualstudio.com/docs/cpp/launch-json-reference
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": ["Makefile", "R5"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"additionalSOLibSearchPath":"${workspaceFolder}/lib",
"preLaunchTask": "Compile_g++"
},
{
"name": "(clang_lldb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": true, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "lldb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
"miDebuggerPath": "C:/Program Files/LLVM/bin/lldb-mi.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile_clang++" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
},
{
"name": "(clang_gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${workspaceFolder}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": true, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
"miDebuggerPath": "gdb.exe", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile_clang++" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
},
{
"name": "(gcc_gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,cppdbg对应cpptools提供的调试功能;可以认为此处只能是cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}/${fileBasenameNoExtension}", // 将要进行调试的程序的路径
"args": ["Makefile", "R5"], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,相当于在main上打断点
"cwd": "${fileDirname}", // 调试程序时的工作目录,此为工作区文件夹;改成${fileDirname}可变为文件所在目录
"environment": [], // 环境变量
"externalConsole": false, // 使用单独的cmd窗口,与其它IDE一致;为false时使用内置终端,远程调试时必须为false
"internalConsoleOptions": "neverOpen", // 如果不设为neverOpen,调试时会跳到“调试控制台”选项卡,你应该不需要对gdb手动输命令吧?
"MIMode": "gdb", // 指定连接的调试器,可以为gdb或lldb。但我没试过lldb
"miDebuggerPath": "gdb", // 调试器路径,Windows下后缀不能省略,Linux下则不要
"setupCommands": [
{ // 模板自带,好像可以更好地显示STL容器的内容,具体作用自行Google
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": false
}
],
"preLaunchTask": "Compile_g++" // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
},
]
}
vscode正则
有正则替换功能的文本编辑器都可用,这里只是用了vscode演示而已。
去除重复行正则字符串(全文重复行检索删除):
查找:^(.+)((?:\r?\n.*)*)(?:\r?\n\1)$
替换:$1$2
不能一次全部替换,要一直按「替换」或「全部替换」,虽然按的是「全部替换」,但是并没有一次「全部替换」
hexo转zola,通过vscode替换meta数据格式
替换title:
(^title: )(.*)(\n)
$1"$2"$3
替换date:
(\d{4})/(\d{1,2})/(\d{1,2})
$1-$2-$3
2020/5/16 10:10:05 == (\d{4})/(\d{1,2})/(\d{1,2})(.*)(\n)
(\d{4})-(\d{1})-(\d{1,2})
(^categories: )(.*)(\n)
[taxonomies]\ntags = ["Linux"]\n
---\n
+++\n
提取telegram图片URL:
blob:https://web.telegram.org/772f50bd-d111-4f06-acaa-1c0e2d5f5ffb
(src=")(blob:https://web.telegram.org/)(.{8}-.{4}-.{4}-.{4}-.{12})
VScode选中所有被正则匹配的结果:
windows:Alt+Enter选中全部结果
vscode插件
vscode删除重复行并排序
安装插件:Transformer,使用前需要先信任文件
ctrl + a 全选文字 ctrl + shift + P 打开命令窗口 输入:Transform:Unique Lines //删除重复行 或 Transform:Sort Lines //排序
Other
关闭vscode #ifdefine
宏开关会使代码自动暗色
打开设置,搜索C_Cpp.dimInactiveRegions 取消勾选即可
vscode 设置代码格式化的缩进为4个空格
- 设置里搜索tabsize,找到Editor: Tab Size,设置为4
- 搜索detectindentation,找到Editor: Detect Indentation,去除勾选
vscode的列编辑 ——批量增删改
列选择: shift + alt + 鼠标左键 行选择: alt + 鼠标左键
vscode 文件标签栏多行显示
- 进入设置
- 输入workbench.editor.wrapTabs,勾选该设置项即可
vscode僵尸进程批量kill
ps -ef | grep "/usr/share/code/code --type=zygote --no-zygote-sandbox" | grep -v grep | cut -c 9-15 | xargs kill -9
ps -ef | grep "/usr/share/code/code --type=zygote" | grep -v grep | cut -c 9-15 | xargs kill -9
ps -ef | grep "/usr/share/code-insiders/code-insiders --type=zygote --no-zygote-sandbox" | grep -v grep | cut -c 9-15 | xargs kill -9
ps -ef | grep "/usr/share/code-insiders/code-insiders --type=zygote" | grep -v grep | cut -c 9-15 | xargs kill -9
vscode中英文字体设置
字体名用英文逗号隔开。如果字体名中间有空格,在字体名前后加上英文单引号。如果字体包含空格或者是中文,需要添加引号。
设置第一种字体英文字体,第二种字体中文字体。在显示中文时,因为第一种字体没有中文字符,所以调用第二种字体来显示。
vscode设置自动识别文件编码
设置->搜索Encoding->勾选Auto Guess Encoding选项
vscode远程连接服务器
使用vscode remote ssh去连接编译服务器,报错:the input device is not a TTY
设置里搜索:remote.SSH.useLocalServer,取消勾选,再次连接编译服务器即可
或者,在settings.json里设置 "remote.SSH.useLocalServer": false,
SSH连接后自动打开Tmux
SSH连接后自动打开Tmux,同时避免与VSCode远程开发冲突 https://zhuanlan.zhihu.com/p/346594276
正则替换log文件的时间戳
假设时间戳格式为:
Format:[%Y%M%D_%h:%m:%s:%t]
vscode的正则替换规则为
src:\[\d{8}_\d{2}:\d{2}:\d{2}:\d{3}\]
dst: