Vim-中插件-vim-spector-使用
启用一个语言的调试器, 在 Plug
后加 --enable
如:
1 |
|
注意安装相关依赖.
注意设置模板文件.
在使用这个插件调试之前, 项目路径下需要有 .vimspector.json
文件.
.vimspector.json 文件的编写
同样需要一个 Debug Adapter 来连接 Vimspector 和实际的 debug 工具.
概念
替换和变量
${...}
中包括:
- 环境变量, 如
${PATH}
- 预定于变量, 如
${workspaceRoot}
,${file}
- 不是上述变量, 其值会在运行时要求用户输入
几个变量的含义:
${fileBasenameNoExtension}
, 表示去掉后缀的相对文件名, 如/path/to/xyz.cc
=>xyz
${USER}
, 环境变量USER
传递给 debug adapter 的命令行参数写为:
1 |
|
其他写法见文章.
默认值
语法为:
1 |
|
default value
可以是任意字符, 除了 }
需要转义, 表示 \
需要用 \\
.
如:
1 |
|
\\}
的作用就是转义一个 }
.
这里要求用户指定一个脚本, 默认路径是当前脚本.
强制类型 (coercing type)
强制为 JSON
值:
1 |
|
强制为 string
值:
1 |
|
如:
1 |
|
这里 stopOnEntry
的结果就为 true
而不是 "true"
.
配置格式
所有的 Vimspector 配置都被定义在一个 JSON 对象中.
基本格式为:
1 |
|
adapters
键值对是可选的, 因为可以写在 configuration
中.
文件和位置
只需要 .vimspector.json
文件位于项目的根路径下.
官方给的示例配置文件中有几个需要替换:
<vimspector home>
, 安装Vimspector
的路径, 可以直接写路径, 也可以设定g:vimspector_base_dir
变量<OS>
, 表示系统, 替换为linux
,macos
之类<filetype>
, 替换为文件类型
适配器配置
格式为:
1 |
|
adapters
块下可以定义任意数量的适配器. 如果几个适配器用相同的名称, 运行最后一个.
扩展 adapters
使用 extends
键值对来继承已有的 adapter:
1 |
|
这里就是继承自 debugpy
适配器.
Debug 配置
可以每个项目配置一个, 也可以全局给某个文件类型配置.
项目和全局配置
可以在几个位置对项目的 debug 进行配置:
g:vimspector_configurations
, 指定目录<vimspector home>/configurations/<OS>/<filetypes>/*.json
.vimspector.json
, 位于项目目录下
找到 .vimspector.json
文件后, 其路径用于 ${workspaceRoot}
的值.
出现在 .vimspector.json
的配置会覆盖其他配置目录下的配置.
如:
1 |
|
Ad-hoc 配置 (临时配置)
可以让 Vimspector 忽略硬盘上的配置文件, 而是使用一些临时配置, 通过调用:
1 |
|
dict
是字典.
如:
1 |
|
配置选择
指定一个 debug configuration 并使用, 用:
1 |
|
设置默认的 debug configuration, 用 "default": true
:
1 |
|
阻止自动选择
设置 "autoselect": false
, 如:
1 |
|
其也会覆盖 "default": true
每个文件类型一个默认选项
利用 filetype
, 如:
1 |
|
扩展配置
同样利用 extends
来继承:
1 |
|
预定义变量
:
${dollar}
- has the value $, can be used to enter a literal dollar$$
- a literal dollar${workspaceRoot}
- the path of the folder where .vimspector.json was found${workspaceFolder}
- the path of the folder where .vimspector.json was found${gadgetDir}
- path to the OS-specific gadget dir (/gadgets/ ) ${file}
- the current opened file${relativeFile}
- the current opened file relative to workspaceRoot${relativeFileDirname}
- path of opened file relative to workspaceRoot${fileBasename}
- the current opened file’s basename${fileBasenameNoExtension}
- the current opened file’s basename with no file extension${fileDirname}
- the current opened file’s dirname${fileExtname}
- the current opened file’s extension${cwd}
- the current working directory of the active window on launch${unusedLocalPort}
- an unused local TCP port