There's a built-in sync feature: https://code.visualstudio.com/docs/editor/settings-sync
I'm sharing this as a gist so that people may grab bits and pieces if they feel like it 🤷
You can easily install the extensions below by:
- creating a folder with
.vscode/extensions.json
- pasting below JSON into that file
- opening the folder in VSCode
- navigating to "Extensions" (
ctrl+shift+x
) - you should see "workspaces recommendations"
More info here: https://code.visualstudio.com/docs/editor/extension-gallery#_workspace-recommended-extensions
If you want to build up a list of extension recommendations yourself, you can run code --list-extensions
in your terminal and then simply copy the output and modify it (or pipe into jq
or some shell script to do this for you).
{
"recommendations": [
"aaron-bond.better-comments",
"alefragnani.Bookmarks",
"andys8.jest-snippets",
"astro-build.astro-vscode",
"austenc.tailwind-docs",
"BeardedBear.beardedtheme",
"betterthantomorrow.calva",
"bierner.color-info",
"bierner.comment-tagged-templates",
"bierner.docs-view",
"bierner.emojisense",
"bierner.github-markdown-preview",
"bierner.markdown-checkbox",
"bierner.markdown-emoji",
"bierner.markdown-mermaid",
"bierner.markdown-preview-github-styles",
"bierner.markdown-shiki",
"bierner.markdown-yaml-preamble",
"bourhaouta.tailwindshades",
"bradlc.vscode-tailwindcss",
"BriteSnow.vscode-toggle-quotes",
"christian-kohler.npm-intellisense",
"christian-kohler.path-intellisense",
"codezombiech.gitignore",
"danielsousadev.styled-components-snippets",
"dbaeumer.vscode-eslint",
"DigitalBrainstem.javascript-ejs-support",
"donjayamanne.githistory",
"dsznajder.es7-react-js-snippets",
"dustypomerleau.rust-syntax",
"dzhavat.css-flexbox-cheatsheet",
"eamodio.gitlens",
"EditorConfig.EditorConfig",
"eg2.vscode-npm-script",
"elmTooling.elm-ls-vscode",
"esbenp.prettier-vscode",
"formulahendry.auto-close-tag",
"formulahendry.auto-rename-tag",
"fosshaas.fontsize-shortcuts",
"gera2ld.markmap-vscode",
"GitHub.copilot",
"GitHub.github-vscode-theme",
"GitHub.remotehub",
"GitHub.vscode-pull-request-github",
"golang.go",
"Gruntfuggly.scoper",
"Gruntfuggly.todo-tree",
"haskell.haskell",
"hbenl.vscode-test-explorer",
"heaths.vscode-guid",
"HookyQR.beautify",
"hoovercj.vscode-settings-cycler",
"IBM.output-colorizer",
"inu1255.easy-snippet",
"jakearl.search-editor-apply-changes",
"JakeBecker.elixir-ls",
"jock.svg",
"johnnywong.vscode-ts-whitespace-converter",
"jonkwheeler.styled-components-snippets",
"jrebocho.vscode-random",
"juliettepretot.lucy-vscode",
"justusadam.language-haskell",
"kbysiec.vscode-go-to-mdn",
"kisstkondoros.csstriggers",
"kisstkondoros.typelens",
"kisstkondoros.vscode-gutter-preview",
"letmaik.git-tree-compare",
"lightyen.tailwindcss-intellisense-twin",
"matklad.rust-analyzer",
"mechatroner.rainbow-csv",
"medo64.render-crlf",
"mhutchie.git-graph",
"mike-co.import-sorter",
"mikestead.dotenv",
"mrmlnc.vscode-attrs-sorter",
"ms-azuretools.vscode-docker",
"ms-kubernetes-tools.vscode-kubernetes-tools",
"ms-vscode-remote.remote-containers",
"ms-vscode-remote.remote-wsl",
"ms-vscode.live-server",
"ms-vscode.test-adapter-converter",
"naumovs.color-highlight",
"necinc.elmmet",
"nhoizey.gremlins",
"nicoespeon.abracadabra",
"Orta.vscode-jest",
"panicbit.cargo",
"pflannery.vscode-versionlens",
"PKief.material-icon-theme",
"qcz.text-power-tools",
"quicktype.quicktype",
"redhat.vscode-yaml",
"sdras.night-owl",
"serayuzgur.crates",
"shardulm94.trailing-spaces",
"silvenon.mdx",
"sleistner.vscode-fileutils",
"stkb.rewrap",
"streetsidesoftware.code-spell-checker",
"styled-components.vscode-styled-components",
"svelte.svelte-vscode",
"svipas.control-snippets",
"sysoev.language-stylus",
"tamasfe.even-better-toml",
"tgreen7.vs-code-node-require",
"Tyriar.sort-lines",
"Tyriar.windows-terminal",
"usernamehw.errorlens",
"vadimcn.vscode-lldb",
"VisualStudioExptTeam.vscodeintellicode",
"vscode-icons-team.vscode-icons",
"vsls-contrib.gistfs",
"webhint.vscode-webhint",
"wmaurer.change-case",
"wwm.better-align",
"xabikos.JavaScriptSnippets",
"yasht.terminal-all-in-one"
]
}
You can add below to keybindings.json
via ctrl+shift+p
Preferences: Open Keyboard Shortcuts (JSON)
More info: https://code.visualstudio.com/docs/getstarted/keybindings#_advanced-customization
[
{
"key": "ctrl+j",
"command": "editor.action.joinLines",
"when": "editorFocus"
},
{
"key": "ctrl+alt+,",
"command": "workbench.action.openSettings"
},
{
"key": "ctrl+alt+b",
"command": "workbench.action.toggleActivityBarVisibility"
},
{
"key": "alt+shift+b",
"command": "workbench.action.toggleStatusbarVisibility"
},
{
"key": "ctrl+shift+l",
"command": "settings.cycle.lineNumbers",
"when": "editorFocus"
},
{
"key": "alt+shift+l",
"command": "editor.action.toggleRenderWhitespace",
"when": "editorFocus"
}
]
You can add below to settings.json
via ctrl+shift+p
Preferences: Open Settings (JSON)
{
"breadcrumbs.enabled": false,
"cSpell.allowCompoundWords": true,
"debug.inlineValues": true,
"debug.showBreakpointsInOverviewRuler": true,
"debug.toolBarLocation": "docked",
"diffEditor.ignoreTrimWhitespace": false,
"diffEditor.renderSideBySide": true,
"editor.codeActionsOnSave": { "source.fixAll": true },
"editor.cursorBlinking": "phase",
"editor.cursorWidth": 3,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.folding": true,
"editor.fontFamily": "JetBrains Mono",
"editor.fontLigatures": true,
"editor.fontSize": 20,
"editor.formatOnPaste": true,
"editor.formatOnSave": true,
"editor.gotoLocation.multipleDeclarations": "goto",
"editor.gotoLocation.multipleDefinitions": "goto",
"editor.gotoLocation.multipleImplementations": "goto",
"editor.gotoLocation.multipleReferences": "goto",
"editor.gotoLocation.multipleTypeDefinitions": "goto",
"editor.guides.indentation": false,
"editor.inlineSuggest.enabled": true,
"editor.lineHeight": 0,
"editor.lineNumbers": "off",
"editor.matchBrackets": "always",
"editor.minimap.enabled": false,
"editor.quickSuggestionsDelay": 0,
"editor.rename.enablePreview": false,
"editor.renderControlCharacters": true,
"editor.renderLineHighlight": "none",
"editor.renderWhitespace": "none",
"editor.smoothScrolling": true,
"editor.snippetSuggestions": "top",
"editor.suggest.preview": true,
"editor.suggestSelection": "first",
"editor.tabCompletion": "on",
"editor.tabSize": 2,
"editor.trimAutoWhitespace": true,
"editor.wordWrap": "off",
"emmet.includeLanguages": { "ejs": "html", "javascript": "javascriptreact" },
"emmet.triggerExpansionOnTab": true,
"errorLens.delay": 1,
"errorLens.enabledDiagnosticLevels": ["error"],
"errorLens.fontSize": "16",
"eslint.alwaysShowStatus": true,
"explorer.confirmDelete": false,
"explorer.sortOrder": "type",
"extensions.closeExtensionDetailsOnViewChange": true,
"files.trimTrailingWhitespace": true,
"git.autofetch": true,
"git.enableSmartCommit": true,
"grunt.autoDetect": "off",
"gulp.autoDetect": "off",
"html.format.extraLiners": "",
"html.format.indentInnerHtml": false,
"html.format.preserveNewLines": false,
"html.format.wrapLineLength": 990,
"jake.autoDetect": "off",
"javascript.suggestionActions.enabled": false,
"javascript.updateImportsOnFileMove.enabled": "always",
"php.suggest.basic": false,
"problems.autoReveal": false,
"redhat.telemetry.enabled": false,
"scoper.highlightColor": "#00000033",
"search.useIgnoreFiles": true,
"settings.cycle": [
{
"id": "lineNumbers",
"values": [
{ "editor.lineNumbers": "off" },
{ "editor.lineNumbers": "on" }
]
}
],
"svelte.enable-ts-plugin": true,
"tabnine.experimentalAutoImports": false,
"telemetry.telemetryLevel": "off",
"terminal.integrated.cursorBlinking": true,
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.drawBoldTextInBrightColors": false,
"terminal.integrated.enableBell": true,
"terminal.integrated.fontFamily": "JetBrains Mono",
"terminal.integrated.fontSize": 14,
"typescript.updateImportsOnFileMove.enabled": "always",
"window.menuBarVisibility": "toggle",
"window.newWindowDimensions": "offset",
"window.restoreFullscreen": true,
"window.titleBarStyle": "custom",
"window.zoomLevel": 0,
"workbench.colorTheme": "lucy-evening",
"workbench.editor.highlightModifiedTabs": true,
"workbench.editor.showTabs": false,
"workbench.editor.tabCloseButton": "off",
"workbench.experimental.layoutControl.enabled": true,
"workbench.iconTheme": "material-icon-theme",
"workbench.list.horizontalScrolling": true,
"workbench.settings.editor": "json",
"workbench.settings.useSplitJSON": true,
"workbench.startupEditor": "none",
"workbench.statusBar.visible": false,
"workbench.tree.renderIndentGuides": "none",
"workbench.view.alwaysShowHeaderActions": true,
"workbench.colorCustomizations": {
"terminalCursor.background": "#ff5874",
"terminalCursor.foreground": "#ff5874",
"terminal.foreground": "#acb4c2",
"terminal.background": "#011627",
"terminal.ansiBlack": "#1d3b53",
"terminal.ansiRed": "#fc514e",
"terminal.ansiGreen": "#a1cd5e",
"terminal.ansiYellow": "#e3d18a",
"terminal.ansiBlue": "#82aaff",
"terminal.ansiMagenta": "#c792ea",
"terminal.ansiCyan": "#7fdbca",
"terminal.ansiWhite": "#a1aab8",
"terminal.ansiBrightBlack": "#7c8f8f",
"terminal.ansiBrightRed": "#ff5874",
"terminal.ansiBrightGreen": "#21c7a8",
"terminal.ansiBrightYellow": "#ecc48d",
"terminal.ansiBrightBlue": "#82aaff",
"terminal.ansiBrightMagenta": "#ae81ff",
"terminal.ansiBrightCyan": "#7fdbca",
"terminal.ansiBrightWhite": "#d6deeb"
}
}