|
| 1 | +- task |
| 2 | + - [Visual Studio Code 中的任务](https://code.visualstudio.com/docs/editor/tasks) |
| 3 | + - [Visual Studio Code Tasks Appendix](https://code.visualstudio.com/docs/editor/tasks-appendix) |
| 4 | ++ ${}引用的变量 |
| 5 | + - [Visual Studio Code Variables Reference](https://code.visualstudio.com/docs/editor/variables-reference) |
| 6 | ++ launch |
| 7 | + - [在 Visual Studio Code 中调试](https://code.visualstudio.com/docs/editor/debugging) |
| 8 | + |
| 9 | +# 介绍 |
| 10 | ++ vscode是纯编辑器,不过因为其强大的插件功能而强大 |
| 11 | ++ 命令面板:Ctrl+Shift+P,执行命令(插件命令,官方命令,@就扫描当前文件进行执行) |
| 12 | + |
| 13 | +# vscode写代码逻辑 |
| 14 | ++ vscode打开的目录叫**workplace** |
| 15 | + - 在下面编写代码 |
| 16 | + - .vscode目录是vscode的配置 |
| 17 | + * launch.json:执行启动(执行语言的可执行文件)/附加(即Debug一个进程)命令 |
| 18 | + + 主要视图是Topbar的Run、LeftSidebar的Run And Debugger(可以选择一个配置对象运行) |
| 19 | + * tasks.json: 编译等命令 |
| 20 | + + 主要视图是Topbar的Terminal |
| 21 | + - 运行生成任务:就是进行build,其他不是build,而是在build上操作,运行其他命令 |
| 22 | + + 写在tasks属性外的,作用在每个task上 |
| 23 | + |
| 24 | +# 配置 |
| 25 | +## tasks.json |
| 26 | ++ [task接口定义](https://code.visualstudio.com/docs/editor/tasks-appendix) |
| 27 | ++ windows:windows特定命令 |
| 28 | ++ linux:linux特定命令 |
| 29 | ++ tasks:task执行一个命令(编译命令) |
| 30 | + - type:规定好的,比如go,java,cppbuild。。。 |
| 31 | + * 但是实际上只有2种,shell和process(作为一个进程执行) |
| 32 | + - label:该任务的名字 |
| 33 | + - command:执行的命令(可以是绝对路径,比如go,如果go的bin目录在环境变量path中,则可以直接写go) |
| 34 | + - args:一个数组,写命令的参数 |
| 35 | + * 当然可以在command中写,args就不用了(args不用为参数加单引号作为字符串---防止空格,但是如果直接写在command需要加单引号如果参数有空格) |
| 36 | + - detail:显示任务的详细信息 |
| 37 | + - presentation:表现形式 |
| 38 | + * panel=new:每次都是新窗口,=shared:共享一个窗口(默认),=dedicated:不同任务使用不同窗口,但是继续使用打开的窗口 |
| 39 | + * clear=false:每次都不会清空窗口内容(默认) |
| 40 | + * reveal=always:面板始终位于前面(默认) |
| 41 | + * close=false:表示执行完命令不关闭(默认) |
| 42 | + - options |
| 43 | + * 覆盖 the defaults for (current working directory), (environment variables), or (default shell) |
| 44 | + * env:添加环境变量 |
| 45 | + + 测试:`command : "sh ./test.sh"` 写入像`echo $GOROOT`这样打印环境变量 |
| 46 | + * cwd:命令执行路径,默认`${workspaceFolder}` |
| 47 | + * shell:shell程序 |
| 48 | + - group |
| 49 | + * kind:有test,build,none(表示没有组,默认值) |
| 50 | + * `"group": { "isDefault":true, kind:"test" } / "group": "test"` |
| 51 | + + group默认是default,ctrl+shift+p执行Run Test/Build Task会直接运行默认任务,不是默认的需要手动执行 |
| 52 | + - dependsOn:数组 |
| 53 | + * 依赖某些任务,即dependsOn先执行,再执行本任务(本任务可以什么都不做,就执行该依赖== 指定顺序执行任务) |
| 54 | + - dependsOrder:依赖执行顺序 |
| 55 | + * 默认parallel,即并行执行dependsOn的任务 |
| 56 | + * sequence,顺序执行dependsOn的任务 |
| 57 | + - runOptions:定义什么时候如何运行任务 |
| 58 | + |
| 59 | +## launch.json |
| 60 | ++ 每一种`type`可以配置属性有一样的,也有不一样的 |
| 61 | + - 比如对于java就有vmArgs属性 |
| 62 | ++ [https://code.visualstudio.com/docs/editor/debugging#_run-and-debug-view](https://code.visualstudio.com/docs/editor/debugging#_run-and-debug-view) |
| 63 | ++ `request`:`launch/attach` |
| 64 | ++ `args`:在cmd执行的命令最后追加 |
| 65 | ++ 一般会执行所有configuration对象,相同type的,也可能不都执行(执行一下其他可以直接启动的) |
| 66 | + - 因此可以这配置一点,那配置一点,如下 |
| 67 | + |
| 68 | +```json |
| 69 | +{ |
| 70 | + "version": "0.2.0", |
| 71 | + "configurations": [ |
| 72 | + { |
| 73 | + "type": "java", |
| 74 | + "name": "Launch with Arguments Prompt", |
| 75 | + "request": "launch", |
| 76 | + "mainClass": "", |
| 77 | + "args": "${command:SpecifyProgramArgs}" |
| 78 | + }, |
| 79 | + { |
| 80 | + "type": "java", |
| 81 | + "name": "Main", |
| 82 | + "request": "launch", |
| 83 | + "mainClass": "com.liruo.vscode.Main", |
| 84 | + "projectName": "java-red-hat-server_bccc830c" |
| 85 | + } |
| 86 | + ] |
| 87 | +} |
| 88 | + |
| 89 | +``` |
| 90 | + |
| 91 | +# 例子 |
| 92 | +## tasks.json |
| 93 | +```json |
| 94 | +{ |
| 95 | + "tasks": [ |
| 96 | + //a c++ example |
| 97 | + { |
| 98 | + "type": "process", |
| 99 | + "label": "cpp build", |
| 100 | + "command": "g++", |
| 101 | + "args": [ |
| 102 | + "-fdiagnostics-color=always", |
| 103 | + "-g", |
| 104 | + "${file}", |
| 105 | + "-o", |
| 106 | + "${fileDirname}\\${fileBasenameNoExtension}.exe" |
| 107 | + ], |
| 108 | + "options": { |
| 109 | + "cwd": "${fileDirname}" |
| 110 | + }, |
| 111 | + "problemMatcher": [ |
| 112 | + "$gcc" |
| 113 | + ], |
| 114 | + "group": { |
| 115 | + "kind": "build", |
| 116 | + "isDefault": true |
| 117 | + }, |
| 118 | + "detail": "a c++ build task" |
| 119 | + }, |
| 120 | + //options |
| 121 | + { |
| 122 | + "type": "shell", |
| 123 | + "label": "shell cmd", |
| 124 | + "command": "sh ./test.sh", |
| 125 | + "options": { |
| 126 | + "env": { |
| 127 | + "env1": "addtional-env1" |
| 128 | + }, |
| 129 | + "cwd": "${workspaceFolder}/cwd-test" |
| 130 | + }, |
| 131 | + "group": "test" |
| 132 | + }, |
| 133 | + //Default task and no Default task |
| 134 | + { |
| 135 | + "type": "shell", |
| 136 | + "label": "test 2", |
| 137 | + "command": "echo 11111", |
| 138 | + "group": { |
| 139 | + "kind": "test", |
| 140 | + "isDefault": true |
| 141 | + } |
| 142 | + }, |
| 143 | + //dependsOn |
| 144 | + { |
| 145 | + "type": "shell", |
| 146 | + "label": "dependsOn1", |
| 147 | + "command": "echo 1111", |
| 148 | + }, |
| 149 | + { |
| 150 | + "type": "shell", |
| 151 | + "label": "dependsOn2", |
| 152 | + "command": "echo 2222", |
| 153 | + }, |
| 154 | + { |
| 155 | + "type": "shell", |
| 156 | + "label": "dependsOn3", |
| 157 | + "command": "echo 3333", |
| 158 | + "dependsOrder": "sequence", |
| 159 | + "dependsOn":["dependsOn2", "dependsOn1"] |
| 160 | + } |
| 161 | + ], |
| 162 | + "version": "2.0.0" |
| 163 | +} |
| 164 | +``` |
| 165 | + |
| 166 | +## launch.json |
| 167 | +```json |
| 168 | +{ |
| 169 | + "version": "0.2.0", |
| 170 | + "configurations": [ |
| 171 | + //a go example |
| 172 | + { |
| 173 | + "name": "Launch Package", |
| 174 | + "type": "go", |
| 175 | + "request": "launch", |
| 176 | + "mode": "auto", |
| 177 | + "program": "${fileDirname}" |
| 178 | + }, |
| 179 | + //a c++ example |
| 180 | + { |
| 181 | + //在label=build的任务之后执行 |
| 182 | + "preLaunchTask": "build", |
| 183 | + "name": "cpp-run", |
| 184 | + "type": "cppdbg", |
| 185 | + "request": "launch", |
| 186 | + "program": "${workspaceFolder}\\bin\\${fileBasenameNoExtension}.exe", |
| 187 | + "args": [], |
| 188 | + //命令工作的路径,默认是workspaceFolder |
| 189 | + "cwd": "${workspaceFolder}", |
| 190 | + "stopAtEntry": false, |
| 191 | + "environment": [], |
| 192 | + "MIMode": "gdb", |
| 193 | + "externalConsole": false, |
| 194 | + "miDebuggerPath": "gdb", |
| 195 | + "setupCommands": [ |
| 196 | + { |
| 197 | + "description": "为 gdb 启用整齐打印", |
| 198 | + "text": "-enable-pretty-printing", |
| 199 | + "ignoreFailures": true |
| 200 | + }, |
| 201 | + { |
| 202 | + "description": "将反汇编风格设置为 Intel", |
| 203 | + "text": "-gdb-set disassembly-flavor intel", |
| 204 | + "ignoreFailures": true |
| 205 | + } |
| 206 | + ] |
| 207 | + } |
| 208 | + ] |
| 209 | +} |
| 210 | +``` |
| 211 | + |
| 212 | +# vscode变量 |
| 213 | +## 变量 |
| 214 | ++ **workspaceFolder** :vscode 打开的目录的路径----工作目录 |
| 215 | + - **workspaceFolderBasename** |
| 216 | + * 工作目录名 |
| 217 | ++ **fileDirname** :选中文件的路径的目录路径 |
| 218 | + - **fileDirnameBasename** |
| 219 | ++ **file** :选中文件的路径 |
| 220 | + - **fileBasename**:选中文件的文件名(单纯只是文件名) |
| 221 | + * **fileBasenameNoExtension** :选中文件的的无扩展名的文件名 |
| 222 | + * **fileExtname** :选中文件的扩展名 |
| 223 | ++ **relativeFile** :是相对工作目录的路径 |
| 224 | + - 如work\demo\c.cpp |
| 225 | + * relativeFile=demo\c.cpp |
| 226 | + * **relativeFileDirname**=demo |
| 227 | ++ **cwd**:当前命令运行目录的路径 |
| 228 | + |
| 229 | + |
| 230 | + |
| 231 | +## 案例 |
| 232 | +Supposing that you have the following requirements: |
| 233 | + |
| 234 | +1. A file located at /home/your-username/your-project/folder/file.ext opened in your editor; |
| 235 | +2. The directory /home/your-username/your-project opened as your root workspace. |
| 236 | + |
| 237 | +So you will have the following values for each variable: |
| 238 | + |
| 239 | ++ **${userHome}** - /home/your-username |
| 240 | ++ **${workspaceFolder}** - /home/your-username/your-project |
| 241 | ++ **${workspaceFolderBasename}** - your-project |
| 242 | ++ **${file}** - /home/your-username/your-project/folder/file.ext |
| 243 | ++ **${fileWorkspaceFolder}** - /home/your-username/your-project |
| 244 | ++ **${relativeFile}** - folder/file.ext |
| 245 | ++ **${relativeFileDirname}** - folder |
| 246 | ++ **${fileBasename}** - file.ext |
| 247 | ++ **${fileBasenameNoExtension}** - file |
| 248 | ++ **${fileDirname}** - /home/your-username/your-project/folder |
| 249 | ++ **${fileExtname}** - .ext |
| 250 | ++ **${lineNumber}** - line number of the cursor |
| 251 | ++ **${selectedText}** - text selected in your code editor |
| 252 | ++ **${execPath}** - location of Code.exe |
| 253 | ++ **${pathSeparator}** - / on macOS or linux, \ on Windows |
| 254 | + |
| 255 | +## 环境变量 |
| 256 | ++ `${env:envName}` |
| 257 | + |
| 258 | +## settings.json的属性 |
| 259 | ++ `${config:configName}` |
| 260 | + - 也可以在settings.json中使用 |
| 261 | + |
0 commit comments