14 KiB
Visual Studio Code
- Configuration
- Handy keyboard shortcuts
- Recommend extensions
- Use JSON schemas
- Use YAML schemas
- Network connections
- Integrations
- Troubleshooting
- Further readings
Configuration
The configuration consists of the application's defaults, overridden by the user settings first and, if existing, by the
workspace settings.
See the settings.json example.
The user configuration is loaded from the settings.json file in the user's configuration directory for the application.
The workspace configuration is loaded from the .vscode/settings.json file in the workspace's root directory.
Make sure to quote names containing spaces (e.g.: 'Courier New').
Handy settings
Built-in:
| Setting | Default value | Scopes | Location in tree | Description |
|---|---|---|---|---|
editor.copyWithSyntaxHighlighting |
true |
User, Workspace | Text Editor | Copy syntax highlighting too when copying something to the clipboard. |
editor.fontFamily |
"Menlo, Monaco, 'Courier New', monospace" |
User, Workspace | Text Editor | Sets the font's family to use in the editor. |
editor.guides.bracketPairs |
false |
User, Workspace | Text Editor | Controls whether bracket pair guides are enabled or not. |
extensions.autoCheckUpdates |
true |
User | Features > Extensions | Automatically check extensions for updates. |
extensions.autoUpdates |
true |
User | Features > Extensions | Automatically update extensions. |
files.insertFinalNewline |
false |
User, Workspace | Text Editor > Files | Insert a final newline at the end of the file when saving it. |
files.trimFinalNewlines |
false |
User, Workspace | Text Editor > Files | Trim all new lines after the final new line at the end of the file when saving it. |
settingsSync.ignoredExtensions |
[] |
User | Application > Settings Sync | List of extensions to ignore while synchronizing. |
telemetry.telemetryLevel |
"all" |
User | Application > Telemetry | Controls Visual Studio Code telemetry, first-party extension telemetry, and participating third-party extension telemetry. |
terminal.integrated.cursorBlinking |
false |
User, Workspace | Features > Terminal | Make the cursor blink in the integrated terminal. |
terminal.integrated.cursorStyle |
"block" |
User, Workspace | Features > Terminal | Show the cursor as a block in the integrated terminal. |
terminal.integrated.defaultProfile.osx |
null |
User, Workspace | Features > Terminal | The default profile used on macOS. |
terminal.integrated.scrollback |
1000 |
User, Workspace | Features > Terminal | The maximum number of lines the terminal keeps in its buffer. |
update.mode |
"default" |
User | Application > Update | Automatically check for application updates. |
Extensions:
| Extension | Setting | Default value | Scopes | Location in tree | Description |
|---|---|---|---|---|---|
| vscode.git (built-in) | git.autofetch |
true |
User, Workspace | Extensions > Git | When set to true, commits will automatically be fetched from the default remote of the current Git repository. Setting to all will fetch from all remotes. |
| angelo-breuer.clock | clock.alignment |
"Left" |
User, Workspace | Extensions > Status Bar Clock | Alignment of the clock on the status bar. |
| angelo-breuer.clock | clock.format |
"hh:MM" |
User, Workspace | Extensions > Status Bar Clock | Date and time format. See https://www.npmjs.com/package/dateformat#mask-options for more options. |
| yzhang.markdown-all-in-one | markdown.extension.orderedList.autoRenumber |
true |
User, Workspace | Extensions > Markdown All In One | Auto fix ordered list markers. |
| yzhang.markdown-all-in-one | markdown.extension.orderedList.marker |
"ordered" |
User, Workspace | Extensions > Markdown All In One | Auto fix ordered list markers. |
| yzhang.markdown-all-in-one | markdown.extension.toc.levels |
"1..6" |
User, Workspace | Extensions > Markdown All In One | Range of levels for the ToC. |
| yzhang.markdown-all-in-one | markdown.extension.toc.orderedList |
false |
User, Workspace | Extensions > Markdown All In One | Use an ordered list in the ToC. |
| redhat.ansible | redhat.telemetry.enabled |
true |
User, Workspace | Extensions > Ansible > Telemetry | Send telemetry to Red Hat servers. |
| redhat.ansible | ansible.validation.lint.enabled |
true |
User, Workspace | Extensions > Ansible > Validation | USe ansible-lint if found to lint Ansible files. Kinda a nuisance when enabled. |
Example: change font to JetBrains Mono.
+ "editor.fontFamily": "'JetBrainsMono Nerd Font', Menlo, Monaco, 'Courier New', monospace",
Handy keyboard shortcuts
| Shortcuts | Effect |
|---|---|
⌘+N |
New file |
⌥+Z |
Toggle word wrap |
Recommend extensions
Add the extensions.json file to the workspace's .vscode folder.
The recommendations[] key shall contain the recommended extensions' identifiers from the Visual Studio Marketplace.
Example.
Use JSON schemas
"json.schemas": [
{
"fileMatch": ["/.commitlintrc"],
"url": "https://json.schemastore.org/commitlintrc.json"
},
{
"fileMatch": ["/.hadolint.yaml"],
"url": "https://raw.githubusercontent.com/hadolint/hadolint/master/contrib/hadolint.json"
},
{
"fileMatch": [
".markdownlint.js",
".markdownlint.json",
".markdownlint.jsonc",
".markdownlint.y*ml"
],
"url": "https://raw.githubusercontent.com/DavidAnson/markdownlint/main/schema/markdownlint-config-schema.json"
},
{
"fileMatch": ["/.yamllint.y*ml"],
"url": "https://json.schemastore.org/yamllint.json"
}
],
Use YAML schemas
"yaml.schemas": {
"https://json.schemastore.org/lefthook.json": ".lefthook.y*ml",
"https://json.schemastore.org/pre-commit-config.json": ".pre-commit-config.y*ml",
"https://json.schemastore.org/pulumi.json": "Pulumi.y*ml",
"https://raw.githubusercontent.com/compose-spec/compose-spec/master/schema/compose-spec.json": "docker-compose.y*ml",
"https://raw.githubusercontent.com/DavidAnson/markdownlint/main/schema/markdownlint-config-schema.json": ".markdownlint.y*ml"
},
Network connections
See Network connections in Visual Studio Code.
Integrations
Claude
Refer Use Claude Code in VS Code.
Caution
Currently requires a Pro or Max subscription to Claude.
Troubleshooting
Blank window upon launch
It could be caused by a conflict between glibc and Electron's sandboxing or GPU related features. Run VSCode with one or more of the following flags:
--disable-gpu--disable-gpu-sandbox
If using MS Teams, also consider using --no-sandbox.
No extensions found when running from source
Check the extensionsGallery key in your fork's product.json file is using the official marketplace:
jq '.extensionsGallery' /usr/lib/code/product.json
{
"serviceUrl": "https://marketplace.visualstudio.com/_apis/public/gallery",
"cacheUrl": "https://vscode.blob.core.windows.net/gallery/index",
"itemUrl": "https://marketplace.visualstudio.com/items"
}
and if not, change them.
Type the name and password of a user in the 'Developer Tools' group to allow Developer Tools Access to make changes on Mac OS X
One needs to add one's user name to the _developer group:
sudo dscl . append '/Groups/_developer' GroupMembership "$USER"
Further readings
Sources
- Using extensions in compiled VSCode
- Recommending VSCode extensions within your Open Source projects
- Official product.json
- VSCode (and some non-patched Electron applications) doesn't run after Tumbleweed update on Nvidia
- Electron applications all crash upon launch
- Authorize a non-admin developer in Xcode / Mac OS
- Deep dive on Ansible VScode extension
- How do I change VS Code settings to use JetBrains Mono font