google机器翻译的文章 https://paklebah.github.io/fpc-dan-vscode.html
FreePascal and VSCode
前一段时间,在Pascal Indonesia小组中,我说过Pascal程序员不必与Delphi和Lazarus这样的IDE捆绑在一起。特别是如果我们不创建GUI程序,从而不需要表单设计功能,例如创建Web或控制台程序。然后,我指出,我以前用的是Visual Studio代码编辑器从微软对我的MacBook Pro电脑。这是我给你看的:
然后,我共享了我使用的VS Code设置文件,以便它们可以如上面的视频所示。我把在设置文件GIST Github上这里包括:launch.json
,tasks.json
,和settings.json
。然后,我还显示了我使用的扩展名,如下所示。
但是显然所有这些还不够清楚。仍然有一些Pascal.ID小组成员询问如何在VS Code中编写Pascal程序。因此,我后来写了这篇文章。
好吧...首先,我假设您已经安装了VS Code应用程序,是的。如果没有安装,请下载VS代码在这里,然后按照有关如何安装它的指导这里。请。
免费Pascal安装
其次,我假设您还安装了Free Pascal的最新版本。如果尚未安装,请在此处下载Free Pascal ,根据您使用的操作系统进行选择。对于64位Windows用户,该文件位于Win32文件夹中 (文件名的结尾为)。然后,请运行安装程序应用程序并按照出现的说明进行操作。win64
第三…这很重要,不要忘记下载免费的Pascal代码文件。Free Pascal的源代码可在此处获得(它仍然在sourceforge.net上),选择结尾的代码,.zip
以便于解压缩。文件下载完成后,卸载(后提取)的文件.zip
到一个文件夹(也可以,只要是任何地方都可以通过VS代码访问)。如果sourceforge.net不能令人满意,例如速度较慢,您也可以通过此处的官方Pascal免费下载页面下载这些文件。
扩展安装
第四,正确正确安装VS Code和Free Pascal后,下一步是安装所需的VS Code扩展程序。在VS Code中安装扩展非常容易。第一种方法是通过VS Code窗口左侧的“扩展”面板(或从“视图” →“扩展”菜单),然后找到要安装的扩展的名称,然后单击相关扩展上的“安装”按钮。第二种方法是通过VS Code Extension Marketplace页面,然后找到要安装的扩展的名称,然后单击扩展页面上的Install按钮。 提及。
一些扩展是必须安装有:
-
OmniPascal
这是Pascal语言扩展,具有VS Code提供的最全面的功能。Omni Pascal仅支持Free Pascal和Delphi语法,因为这两种Pascal方言是最著名和广泛使用的。官方网站在这里,如果您想提交建议,批评,请求或错误报告,请转到此处的页面。 -
Debug Native
如果无法执行调试(debug),则不编程其名称。这是我们后来的Pascal计划债务人的扩展。我个人实际上使用CodeLLDB,因为在Mac上只有LLDB可用,而没有GDB。但是对于非Mac用户,我建议改用NativeDebug,因为它同时支持LLDB和GDB。或者,当然也可以使用其他人员扩展,重要的是您可以做到。 -
VSCode很棒的图标
尽管看起来很琐碎,但此扩展对于区分Pascal程序文件与其他文件非常重要,这是VS Code文件面板中的特殊图标。没有清晰的标记,对于我们来说在文件面板中选择文件将更加困难。短,我知道,只有扩展名的文件该鼓励的Pascal程序的图标,包括文件.pas
,.lpr
和.dpr
。那是因为我向创作者提出了要求,并帮助提供了Pascal的图标。
建议安装的其他一些扩展包括:
-
Git历史记录
这是一个扩展程序,用于显示程序代码文件的更改历史记录。默认情况下,VS Code支持Git作为文件更改记录工具,通常称为CSV(代码版本控制系统)或SCM(源代码管理)。但是,VS Code提供的默认视觉功能非常有限,此扩展提供了更完整的功能。 -
更好的注释
这是用于在程序代码的注释行中添加颜色的扩展。通过此扩展程序,我们可以发布特别有意义的注释,这些注释的颜色不同于常规注释。例如,指示错误的注释使用红色,需要注意的注释使用黄色,注释注释使用蓝色,依此类推。 -
书签
这是用于将书签添加到程序行的扩展。通过此扩展,我们可以标记重要且需要特别注意的程序行。例如,我们可以轻松返回到离开计算机后标记的行。或者标记我们暂时推迟工作的行,依此类推。 -
括号对着色器
这是对程序代码块的每对括号和标记对添加不同颜色的扩展。通过此扩展,我们可以轻松识别每对括号和相应的代码块。当我们的代码涉及多个括号或嵌套代码块时,这一点很重要。
特别是对于通常在远程工作的程序员,必须安装以下扩展,即SFTP。通过此扩展,可以直接从VS Code面板文件本身更轻松,更快,更安全地通过SSH协议远程下载和上传程序文件。这种扩展有很多,但是这是我尝试过的最简单,最轻巧的扩展。
每次扩展安装后,VS Code将在相应的扩展行中显示“重新加载”按钮。不要忘记单击该扩展程序的按钮。某些设置需要重新启动VS Code,因此如有必要,请重新启动。
OmniPascal设置
第五,在安装了所有必需的扩展件之后,下一步就是为每个扩展件进行安排。由于这是关于在VS Code中使用Pascal的,因此,我仅讨论仅与Pascal一起使用所需的扩展设置。有关其他扩展程序设置,请在相应页面上阅读每个扩展程序的指南。
接下来...请运行VS Code应用程序,然后打开“文件”菜单→“打开...”并导航到存储Pascal程序的文件夹。然后,通过首选项→设置菜单打开VS Code设置,它将settings.json
以可用VS Code设置列表的形式显示文件的内容。然后将以下三行添加到设置文件中的第一行之后:
"omnipascal.defaultDevelopmentEnvironment": "FreePascal",
"omnipascal.delphiInstallationPath": "/usr/local/bin/fpc",
"omnipascal.freePascalSourcePath": "/home/bee/fpc-src/",
第一行是我们使用"omnipascal.defaultDevelopmentEnvironment"
的Pascal编译器的类型。有两个选项,即FreePascal
(无空格)和Delphi
。我将其设置为FreePascal
因为使用Free Pascal。请根据您的需要进行调整。
第二行是编译器"omnipascal.delphiInstallationPath"
文件名及其所在的文件夹。对于Mac上的Free Pascal,它是(是编译器文件的名称),而对于Windows,它通常是(取决于安装过程中给出的内容)。对于Delphi用户,通常为(安装程序应用程序的默认值)。请仅将其调整为每个文件的位置,并确保该位置正确。/usr/local/bin/fpc
fpc
c:fpc<versi>in<platform>fpc.exe
c:program filesembarcaderostudio<versi>indcc32.exe
第三行是Free Pascal代码文件所在的文件夹"omnipascal.freePascalSourcePath"
的位置。该位置取决于您将下载的源代码文件放在何处。需要此设置,以便OmniPascal可以在编译程序时显示所需的Free Pascal单位的源代码。我通常放置在一个文件夹家庭(家庭)我,如果Windows通常在为文件夹。请调整一下。 C:My Documentsfpc-src
文件中的任何其他设置行都可以忽略,因为它们只是我的个人设置。但是,如果您也想尝试一下,请随时对其进行调整,并学习理解VS Code中的设置。
命令设定
第六,是Free Pascal任务的设置。通过菜单“任务” →“配置任务... ”打开VS Code命令设置,然后将出现“打开task.json文件”选项,只需单击即可。VS Code将在当前活动文件夹tasks.json
的文件夹 .vscode
中创建文件。由于我们仅使用VS Code,因此文件应仍为空或尚不包含任何设置。如果您是VS Code的旧用户,请确保我的设置不会覆盖或删除以前设置的内容。最好在继续之前做一个备份(backup)文件。tasks.json
注意:
深入命令tasks.json
适用于Mac或Linux上的Free Pascal用户。如果在Windows上使用Delphi,则调整每个命令中的参数。确保"command"
Windows中entry的值是正确的命令,并确保"args"
Delphi中entry的值是正确的参数。如有疑问,只需将值保留在条目中,"args"
然后查阅Delphi编译器参数文档。
然后,请打开tasks.json
我的文件,复制(复制)全部内容,然后粘贴(粘贴)到tasks.json
正在打开的VS Code文件中。然后通过文件→保存菜单保存文件。保存文件后,每次我们运行菜单命令Tasks → Run Tasks…时,都会出现5个新的命令选项,如下所示。
在tasks.json
有5个命令,我提供,即:
-
语法检查以编译程序代码而不运行它。如果我们只想测试程序在语法上是否正确,但又不想实际运行该程序,则这很有用。
更新:语法检查命令现在将“终端”面板中的编译器错误消息原本显示在“问题”面板中,以便可以单击每个消息并将光标立即放置在错误所在的位置。 -
调试版本通过包含调试信息来编译程序。如果我们要调试正在创建的程序,这将很有用。
-
Build Release编译程序时不包含调试信息,因此文件大小更紧凑。如果我们想将完成的程序共享给用户,这将很有用。
-
执行Binary以运行编译的程序。这对于确保程序可以正常运行并且可以在我们正在创建的程序上进行测试很有用。
-
清除文件可从编译过程中清除不必要的文件。请注意,此命令还会从编译中删除完成的程序文件。
另外,您还可以通过在VS Code中安装Jedi Code Formatter(命令行界面)的CLI版本来美化Pascal代码的命令。有关更多说明,请在此处阅读JCF-CLI页面。或者,您也可以在这里尝试在线版本。
注意:
tasks.json
最近的文件以这种方式发展,具有一些附加的新功能和更灵活的设置。使用它们之前,请确保您了解新功能和可用设置。如果有任何问题,请使用此处的tasks.json
原始文件,或选择适当的版本(修订版)。
机组安排
在进行下一步之前,我假设您已经在计算机上安装了调试功能,无论是GDB还是LLDB。我建议您只使用GDB,因为Free Pascal编译器比LLDB与GDB的兼容性更高。Linux用户可以通过命令apt-get
(Debian发行版和衍生版本,包括Ubuntu)或yum
(RedHat发行版和衍生版本,例如Fedora)轻松安装LLDB或GDB 。对于Mac用户,只需从Apple安装XCode应用程序,其中也包括LLDB。
对于Windows用户,安装GDB或LLDB有点复杂,因为Windows与工具的兼容性比Windows低。最简单的方法是安装已经带有GDB的Lazarus IDE,并为您安装它。我本人仅使用Linux和Mac,所以我不太了解如何在Windows上安装GDB。如果您知道如何使用,请在下面的评论栏中解释一下,以便我添加到本文中。谢谢。
第七,是机组指令的安排。请到菜单调试→打开配置,然后VS代码将打开(或创建一个新的,如果不存在)命名的调试文件launch.json
中的文件夹 .vscode
中的文件夹中当前处于活动状态。同样,如果您是VS Code的旧用户,请确保我的设置不会覆盖或清除您以前的任何设置。
注意:
Delphi用户不能使用VS Code的调试功能,因为Delphi编译结果与GDB或LLDB不兼容。而且Delphi的调试功能也不能在Delphi IDE外部使用。也许您最好只使用Free Pascal。
然后,请打开launch.json
我的文件,复制(复制)全部内容,然后粘贴(粘贴)到launch.json
正在打开的VS Code文件中。如果使用的是NativeDebug调试扩展,请执行以下操作:
- 将值更改
"type"
为lldb
或gdb
根据您的使用。 - 将条目更改
"program"
为"executable"
。 - 删除行
"terminal"
。
然后通过文件→保存菜单保存文件。保存文件后,每次我们运行菜单命令Debug → Start Debugging(或F5键)时,VS Code都会对当前打开的程序代码运行调试过程。
我包括的乘员设置执行以下过程:
-
VS Code通过运行Build Debug命令来编译当前打开的程序代码。确保打开Pascal代码,否则编译将失败。
-
VS Code将调用已安装的调试扩展。调试类型根据条目中的值执行
"type"
。 -
VS Code将运行调试过程。我们可以通过迷你乘员面板控制乘员的过程,例如暂停,跨步,步入等。要在调试过程中观察该值,可以通过调试面板(从“视图” →“调试”菜单)完成。上面的视频中有一个例子。
-
调试过程完成后,VS Code将运行Clean Files命令。
测试设定
第八,最后……为确保安装和设置正确,我们需要通过创建一个简单的Pascal程序对其进行测试。请创建一个新文件,为其命名,test.pas
然后复制并粘贴以下示例代码。
program test;
uses CRT;
begin
clrscr;
writeln('Hello World!');
end.
然后保存文件。请执行下列操作:
-
在VS Code窗口的状态线(状态栏)的右下角,应将其写入
ObjectPascal
(没有空格)。在左侧文件窗格中查看,它应该有一个test.pas
猎豹头图标。查看该行上的程序代码uses CRT;
,应该没有红线(这意味着存在别名错误error
)。如果一切合适,那么OmniPascal和VSCode Great Icons扩展应该可以正常工作。 -
通过菜单任务→运行任务…,按照上面的顺序从语法检查到清理文件,一一执行上面的5个命令。如果所有命令运行都没有错误消息,则表示Free Pascal的其他命令已正常运行。
-
单击程序行号左侧的红点,在该行的程序代码中放置一个断点
clrscr;
(请参见上面的视频)。然后按F5键运行调试过程。VS Code将如上所述运行调试过程。 -
当调试过程到达该行时
clrscr;
,程序将停止,而VS Code在下一行将显示一个黄色符号。您只需单击迷你剧组面板上的继续按钮(如绿色播放按钮)。 -
如果程序继续运行,直到显示文本
Hello World!
并顺利完成,则调试设置正确。
如果以上所有安装和设置都正确正确地进行了,那么恭喜!然后,您可以享受使用VS Code编写Pascal程序的便利,如我上面的视频所示。
从而。可能有用。
———
附上作者的 配置文件
//launch.json
//launch.json { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { // shortcut: F5 (start debugging) "type": "lldb", "request": "launch", "name": "LLDB Debugger", "cwd": "${workspaceFolder}", "program": ".build/debug/${fileBasenameNoExtension}", "args": [], "terminal": "integrated", "preLaunchTask": "fpc: Build Debug", "postDebugTask": "fpc: Remove Build Files" }, // { // native debugger // "type": "lldb-mi", // "request": "launch", // "name": "Native Debugger", // "cwd": "${workspaceFolder}", // "target": ".build/debug/${fileBasenameNoExtension}", // // "terminal": "", // "preLaunchTask": "fpc: Build Debug", // "postDebugTask": "fpc: Remove Build Files" // }, ] }
//tasks.json
//tasks.json { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format // //! DON'T FORGET TO ADD THESE LINES INTO YOUR USER SHELL PROFILE // export PATH=$PATH:<PATH_TO_FPC_BIN_FOLDER> // export INSTANTFPCOPTIONS="-n @<PATH_TO_FPC_BIN_FOLDER>fpc.cfg" // "version": "2.0.0", "options": { "cwd": "${workspaceFolder}", "env": { // task settings for files and folders, use full path for commands "FPC_COMMAND" : "/Users/MacBee/Programs/freepascal/fpc/bin/x86_64-darwin/fpc.sh", "JCF_COMMAND" : "./jcf", "PROJECTFILE" : "${relativeFile}", "PROJECTBASE" : "${fileBasenameNoExtension}", "UNITS" : "~/Programs/GitHub/*", "INCLUDES" : "~/Programs/pascal/inc/*", "LIBRARIES" : "~/Programs/pascal/lib/*", "OUTPUT" : ".build", "DEBUG" : ".build/debug", "RELEASE" : ".build/release", "DEPLOY" : ".build/deploy", "EXTENSION" : ".cgi", // set this to .cgi for web app "PROCESSOR" : "-Px86_64", "OPSYSTEM" : "-Tdarwin", "SYNTAX" : "-Mobjfpc", }, }, "tasks": [ { //! Build debug without any optimization "label" : "fpc: Build Debug", "type" : "shell", "group" : "build", "command": "${FPC_COMMAND}", "args" : [ "${PROJECTFILE}", // main project file "${PROCESSOR}", // target processor "${OPSYSTEM}", // target operating system "${SYNTAX}", // pascal syntax mode "-Scahij-", // pascal syntax setting "-CroOti", // generated code setting "-O-", // disable optimization "-Xg", // external debug info "-B", // rebuild all units "-v", // verbose message "-glpsw2", // dwarf debug setting "-godwarfcpp", // dwarf mode setting "-Fu${UNITS}", // additional units "-Fi${INCLUDES}", // additional include files "-Fl${LIBRARIES}", // additional libraries "-FE${DEBUG}", // output for binary "-FU${OUTPUT}", // output for units ], "presentation": { "focus": true, }, "problemMatcher": { "owner" : "objectpascal", "fileLocation": ["relative", "${workspaceFolder}"], "pattern" : { // capture FPC's error messages and display them in Problems panel "kind" : "location", "regexp" : "^(.*)\((\d.*),(\d.*)\) (Warning|Error|Fatal): (.*)$", "file" : 1, "line" : 2, "column" : 3, "severity" : 4, "message" : 5, "loop" : true } } }, { //! Build release with full optimization "label" : "fpc: Build Release", "type" : "shell", "group" : { "kind" : "build", "isDefault": true }, "command": "${FPC_COMMAND}", "args": [ "${PROJECTFILE}", // main project file "${PROCESSOR}", // target processor "${OPSYSTEM}", // target operating system "${SYNTAX}", // pascal syntax mode "-Schij-", // pascal syntax setting "-CX", // generated code setting "-O3", // code optimization setting "-XXs", // executable setting "-B", // rebuild all units "-v", // verbose message "-Fu${UNITS}", // additional units "-Fi${INCLUDES}", // additional include files "-Fl${LIBRARIES}", // additional libraries "-FE${RELEASE}", // output for binary "-FU${OUTPUT}", // output for units ], "presentation": { "focus": true, }, "problemMatcher": { "owner" : "objectpascal", "fileLocation": ["relative", "${workspaceFolder}"], "pattern" : { "kind" : "location", "regexp" : "^(.*)\((\d.*),(\d.*)\) (Warning|Error|Fatal): (.*)$", "file" : 1, "line" : 2, "column" : 3, "severity" : 4, "message" : 5, "loop" : true } } }, { //! Syntax check without linking "label" : "fpc: Syntax Check", "type" : "shell", "group" : "build", "command": "${FPC_COMMAND}", "args" : [ "${PROJECTFILE}", // main project file "${PROCESSOR}", // target processor "${OPSYSTEM}", // target operating system "${SYNTAX}", // pascal syntax mode "-Scahij-", // pascal syntax setting "-Se99", // maximum error found "-B", // rebuild all units "-v", // verbose message "-s", // syntax check mode "-Fu${UNITS}", // additional units "-Fi${INCLUDES}", // additional include files "-Fl${LIBRARIES}", // additional libraries "-FE${OUTPUT}", // output for binary "-FU${OUTPUT}", // output for units ], "presentation": { "focus": true, }, "problemMatcher": { "owner" : "objectpascal", "fileLocation": ["relative", "${workspaceFolder}"], "pattern" : { "kind" : "location", "regexp" : "^(.*)\((\d.*),(\d.*)\) (Warning|Error|Fatal): (.*)$", "file" : 1, "line" : 2, "column" : 3, "severity" : 4, "message" : 5, "loop" : true } } }, { //! Run code using InstantFPC (quick compile) "label" : "fpc: Run Code", "type" : "shell", "group" : "test", "command": "instantfpc", "args" : [ "${PROJECTFILE}", // main project file "-B", // always build ], "presentation": { "focus": true, }, "problemMatcher": { "owner" : "objectpascal", "fileLocation": ["relative", "${workspaceFolder}"], "pattern" : { "kind" : "location", "regexp" : "^(.*)\((\d.*),(\d.*)\) (Warning|Error|Fatal): (.*)$", "file" : 1, "line" : 2, "column" : 3, "severity" : 4, "message" : 5, "loop" : true } } }, { //! Execute generated (debug) binary "label": "fpc: Execute Binary", "type" : "shell", "group": { "kind": "test", "isDefault": true }, "command": "./${DEBUG}/${PROJECTBASE}", "args" : [], "presentation": { "focus": true, }, "problemMatcher": [] }, { //! Deploy binary from release "label" : "fpc: Deploy Release", "type" : "shell", "command": "cp", "args" : [ "${RELEASE}/${PROJECTBASE}", // from release "${DEPLOY}/${PROJECTBASE}${EXTENSION}", // to deploy ], "presentation": { "reveal": "silent", }, "problemMatcher": [] }, { //! JCF beautify Code "label" : "JCF: Beautify Code", "type" : "shell", "command": "${JCF_COMMAND}", "args" : [ "${PROJECTFILE}", "-clarify", "-inplace", "-config=jcf.xml" ], "presentation": { "reveal": "never" }, "problemMatcher": [] }, { //! JCF obfuscate Code "label" : "JCF: Obfuscate Code", "type" : "shell", "command": "${JCF_COMMAND}", "args" : [ "${PROJECTFILE}", "-obfuscate", "-inplace", "-config=jcf.xml" ], "presentation": { "reveal": "never" }, "problemMatcher": [] }, { //! Create build folders for compilation "label" : "fpc: Create Build Folders", "type" : "shell", "command": "mkdir", "args" : [ "${OUTPUT}", "${DEBUG}", "${RELEASE}", "${DEPLOY}", ], "presentation": { "reveal": "silent", }, "problemMatcher": [] }, { //! Remove compiler genereted files "label" : "fpc: Remove Build Files", "type" : "shell", "command": "rm", "args" : [ "-rf", // remove them all! "${OUTPUT}/*.*", // unit files "${DEBUG}/{,.[!.],..?}*", // debug files "${RELEASE}/{,.[!.],..?}*", // release files "~/.cache/instantfpc/${PROJECTBASE}", // ifpc binary "~/.cache/instantfpc/${PROJECTBASE}.*", // ifpc source ], "presentation": { "reveal": "silent", }, "problemMatcher": [] }, ] }
//settings.json
//settings.json
{
"omnipascal.searchPath": "~/Programs/pascal",
"omnipascal.freePascalSourcePath": "~/Programs/freepascal/fpcsrc",
"omnipascal.delphiInstallationPath": "~/Programs/freepascal/fpc/bin/x86_64-darwin",
"omnipascal.defaultDevelopmentEnvironment": "FreePascal",
"sde.buildOnSave": false,
"sde.languageServerMode": "langserver",
"swift.languageServerPath": "~/GitHub/sourcekit-lsp/.build/release/sourcekit-lsp",
"sourcekit-lsp.serverPath": "~/GitHub/sourcekit-lsp/.build/release/sourcekit-lsp",
"[markdown]": {
"files.trimTrailingWhitespace": false,
},
"files.trimFinalNewlines": true,
"files.insertFinalNewline": true,
"files.trimTrailingWhitespace": true,
"files.associations": {
"*.json": "jsonc"
},
"editor.fontFamily": "'FiraCode-Medium', 'DejaVu Sans Code', Menlo, Monaco, monospace",
"editor.rulers": [80, 120],
"editor.tabSize": 2,
"editor.fontSize": 13,
"editor.letterSpacing": 0.1,
"editor.wordWrapColumn": 120,
"editor.fontLigatures": true,
"editor.matchBrackets": false,
"editor.smoothScrolling": true,
"editor.minimap.enabled": false,
"editor.renderLineHighlight": "all",
"editor.tokenColorCustomizations": {
"comments": {
"fontStyle": "italic"
}
},
"workbench.iconTheme": "vscode-great-icons",
"workbench.enableExperiments": false,
"workbench.editor.tabCloseButton": "left",
"workbench.statusBar.feedback.visible": false,
"workbench.settings.enableNaturalLanguageSearch": false,
"workbench.colorCustomizations": {
"[Default Dark+]": {
"editorRuler.foreground": "#333333",
"editor.lineHighlightBackground": "#282828",
// "editorGutter.background": "#181818",
// "editorIndentGuide.activeBackground": "#a0a0a0",
"sideBar.border": "#333333",
// "tab.border": "#3f3f3f",
},
},
"window.zoomLevel": 0,
"window.titleBarStyle": "native",
"window.title": "${rootName}${separator}${dirty}${activeFolderShort}/${activeEditorShort} | Code",
"explorer.confirmDelete": false,
"explorer.confirmDragAndDrop": false,
"terminal.integrated.fontSize": 13,
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.cursorBlinking": true,
"debug.toolBarLocation": "docked",
"lldb.launch.terminal": "integrated",
"git.enableSmartCommit": true,
"search.showLineNumbers": true,
"zenMode.hideLineNumbers": false,
"telemetry.enableTelemetry": false,
"telemetry.enableCrashReporter": false,
}