Skip to content

Instantly share code, notes, and snippets.

@mxkmn
Last active July 10, 2024 09:36
Show Gist options
  • Save mxkmn/79330daa8114428a13e62090dcc78d30 to your computer and use it in GitHub Desktop.
Save mxkmn/79330daa8114428a13e62090dcc78d30 to your computer and use it in GitHub Desktop.
VS Code Configuration

Полезные настройки Visual Studio Code

Эти параметры деактивированы по умолчанию, но сильно влияют на пользовательский опыт. Добавьте понравившиеся в собственную конфигурацию или скопируйте их к себе полностью (F1 -> Open User Settings (JSON)).

Вручную просмотрены и проверены все (более 2000) доступные в версии 1.90 (май 2024) параметры, за исключением категорий Специальные возможности, GIT, Терминал, JavaScript Debugger и TypeScript. Некоторые параметры терминала и GIT добавлялись сами по себе в процессе работы.

{
///
//// параметры, которые могут бесить
///
	// отступы
	"editor.detectIndentation": false, // отключение автоматического определения отступов для каждого файла - будут использоваться установленные отступы, а не используемые в файле
	"editor.insertSpaces": false, // использование табов вместо пробелов - полезно, т.к. разработчикам с изменённой длиной отступов легче работать с файлом, содержащим табы
	"editor.indentSize": 4, // обычная длина отступа пробелами (необходимо указать после отключения detectIndentation)
	"editor.tabSize": 2, // уменьшенный отступ для табов (влезет больше текста)
	"editor.stickyTabStops": true, // отступ несколькими пробелами будет выделяться полностью

	// шрифты
	// "editor.fontLigatures": true, // подключение лигатур из Cascadia Code / Fira Code (<= == === => ~~>)
	// "editor.fontFamily": "'Cascadia Code', Consolas, 'Courier New', monospace", // подключение Cascadia Code (предустановлено в Windows 11)
	// "editor.fontFamily": "'Fira Code Retina', Consolas, 'Courier New', monospace", // подключение Fira Code (FiraCode-VF.ttf: https://github.com/tonsky/FiraCode/wiki/Installing)
	// "editor.fontFamily": "'Comic Mono', Consolas, 'Courier New', monospace", // подключение Comic Mono (ComicMono.ttf: https://dtinth.github.io/comic-mono-font)

	// редактор
	"editor.wordWrap": "on", // перенос строк, если они не влазят на экране (аналогично шорткату Alt+Z)
	// "files.autoSave": "onWindowChange", // автосохранение при переходе к другому окну
	// "editor.formatOnPaste": true, // автоформатирование при вставке
	"editor.copyWithSyntaxHighlighting": false, // отключение копировании подсветки синтаксиса

	// редактор различий (относится к GIT)
	"diffEditor.codeLens": false, // отключение отображения использований кода (CodeLens) в редакторе различий
	// "diffEditor.renderSideBySide": false, // показ различий без разделения экрана
	// "diffEditor.ignoreTrimWhitespace": true, // не показывать замену пробелов на табы (и наоборот) в редакторе различий

	// панель открытых редакторов
	"workbench.editor.pinnedTabsOnSeparateRow": true, // закреплённые вкладки на отдельной строке
	"workbench.editor.preventPinnedEditorClose": "never", // разрешить закрывать закреплённые вкладки
	"workbench.startupEditor": "newUntitledFile", // новый текстовый файл без названия вместо домашней страницы
	// "workbench.startupEditor": "readme", // показ readme, если доступно, при открытии папки (открывается не во временной вкладке, приходится вручную закрывать)
	// "workbench.editor.wrapTabs": true, // вкладки на нескольких строках вместо прокрутки
	// "workbench.editor.titleScrollbarSizing": "large", // большой ползунок для горизонтальной прокрутки открытых вкладок (удобно при использовании мыши, неудобно при использовании тачпада)
	// "explorer.autoReveal": false, // не показывать файл в проводнике при открытии вкладки с ним

	// другое
	"window.openFoldersInNewWindow": "on", // открытие нового окна при открытии папки/рабочей области
	"terminal.integrated.defaultProfile.windows": "Command Prompt", // cmd вместо Powershell в Windows
	// "workbench.activityBar.location": "top", // показывать панель действий сверху (невозможно скрыть повторным нажатием)
	// "search.useIgnoreFiles": false, // включение поиска по всем файлам (по умолчанию игнорируются файлы, указанные в .ignore и .gitignore)

///
//// полезные параметры
///
	// оптимизации
	"telemetry.telemetryLevel": "off", // отключение телеметрии
	"workbench.enableExperiments": false, // отключение A/B тестов экспериментальных фичей
	"editor.experimental.asyncTokenization": true, // анализ файла в отдельном воркере для повышения производительности

	// отключение бесячего
	"security.workspace.trust.enabled": false, // отключение вопроса о доверии при открытии новых рабочих областей
	"workbench.layoutControl.enabled": false, // отключение кнопок управления макетом редактора
	"window.enableMenuBarMnemonics": false, // отключение перехода к вкладкам меню через alt
	"window.customMenuBarAltFocus": false, // отключение возможности входа в меню при зажатии alt
	"explorer.confirmDragAndDrop": false, // отключение подтверждения перемещения
	"explorer.confirmDelete": false, // отключение подтверждения удаления

	// украшательства
	"window.dialogStyle": "custom", // красивые диалоговые окна
	"editor.cursorSmoothCaretAnimation": "on", // плавная анимация перемещения курсора
	"editor.cursorBlinking": "smooth", // плавная анимация мигания курсора
	"editor.smoothScrolling": true, // плавная прокрутка по PgUp/PgDn
	"workbench.list.smoothScrolling": true, // плавная прокрутка колесом мыши списков на боковой панели

	// удобства в окне редактирования
	"editor.guides.bracketPairs": true, // цветная линия-помощник для отступов между {} в коде
	"editor.renderWhitespace": "boundary", // показ лишних (нееденичных) пробелов
	"editor.scrollBeyondLastLine": false, // отключение прокрутки дальше, чем конец файла
	"editor.scrollPredominantAxis": false, // прокрутка тачпадом лишь по одной оси одновременно
	"editor.renderLineHighlight": "all", // выделение строки, в которой находится курсор, горизонтальными полосами по всей длине
	"editor.defaultColorDecorators": true, // показ пикера цветов не только в CSS
	"editor.inlayHints.enabled": "onUnlessPressed", // отключение показа типов и названий переменных для передаваемых свойств при зажатии Ctrl+Alt
	"editor.definitionLinkOpensInPeek": true, // открытие описания фичи без разделения экрана при нажатии Ctrl+ЛКМ по участку кода

	// удобства вне окна редактирования
	"editor.minimap.showSlider": "always", // показывать область просмотра на миникарте без наведения мыши
	"search.searchEditor.defaultNumberOfContextLines": null, // сохранение количества строк контекста для Search Editor
	"debug.onTaskErrors": "showErrors", // открытие вкладки проблем при ошибке компиляции
	"debug.showBreakpointsInOverviewRuler": true, // показ точек останова на ползунке справа
	"debug.showSubSessionsInToolBar": true, // улучшенный вывод дочерних процессов в дебаггере (тут понятнее: https://youtu.be/OK2cdq9HXMw)
	"workbench.editor.decorations.colors": false, // отключение кричащих цветов в названии файла при наличии ошибок и изменений (всё ещё отображаются справа от названия)

	// улучшения редактирования
	"editor.emptySelectionClipboard": false, // отключение копирования строки при отсутствии выделения (при случайном нажатии)
	"editor.linkedEditing": true, // автоматическое изменение парных параметров (например тегов HTML)
	"editor.smartSelect.selectLeadingAndTrailingWhitespace": false, // отключение выделения пробелов при Smart Select (Shift + Alt + L/R arrows)
	"files.trimFinalNewlines": true, // удалять лишние Enter в конце файла при сохранении
	"files.trimTrailingWhitespace": true, // удалять лишние пробелы при сохранении
	"[markdown]": { // фикс для Markdown (там дополнительные пробелы можно использовать для отступов)
		"files.trimTrailingWhitespace": false
	},

	// улучшения подсказок
	"editor.suggest.preview": true, // показывает продолжение ввода серым цветом, будто подсказка уже применена
	"editor.acceptSuggestionOnEnter": "off", // не подтверждать подсказку по Enter (только Tab)
	"editor.acceptSuggestionOnCommitCharacter": false, // не подтверждать подсказку при вводе спецсимвола
	"editor.suggestSelection": "recentlyUsed", // предлагать на основе последних использований
	"editor.suggest.localityBonus": true, // подсказывать близкие к курсору слова
	"editor.suggest.matchOnWordStartOnly": false, // показывать больше соответствий в IntelliSense
	"editor.occurrencesHighlight": "multiFile", // подсвечивает выделенный текст во всех открытых на экране редакторах

	// странно, что не включено по умолчанию
	"files.autoGuessEncoding": true, // автоопределение кодировки при открытии файла
	"workbench.list.defaultFindMode": "filter", // автоматическая фильтрация при поиске в древовидных списках
	"explorer.openEditors.sortOrder": "alphabetical", // включение сортировки открытых редакторов (включается слева в настройках проводника (тык на три точки))
	"timeline.pageOnScroll": true, // автоматическая подгрузка более старых изменений во временную шкалу (она тоже слева) при скролле
	"explorer.incrementalNaming": "smart", // инкрементировать число в названии при создании копии вместо добавления `copy`
	"explorer.fileNesting.enabled": true, // вложение дочерних файлов (тут понятнее: https://code.visualstudio.com/updates/v1_64#_explorer-file-nesting)

	// терминал
	"terminal.integrated.scrollback": 10000, // увеличение количества строк в 10 раз (важно при работе с Serial)
	"terminal.integrated.rightClickBehavior": "default", // контекстное меню при нажатии ПКМ
	"terminal.integrated.confirmOnExit": "hasChildProcesses", // подтверждать выход из VSCode при выполнении задачи

	// GIT и вкладка системы управления версиями
	"scm.alwaysShowRepositories": true, // отображение названия текущего репозитория
	"git.confirmSync": false, // отключение необходимости подтверждать синхронизацию
	"git.enableSmartCommit": true, // отключение необходимости подтверждать фиксацию изменений
	"git.closeDiffOnOperation": true, // закрывать редактор различий после выполнения операции
	"git.terminalGitEditor": true, // ввод изменений в VSCode, а не в Vim/редакторе по умолчанию

	// Markdown
	"markdown.occurrencesHighlight.enabled": true, // общая подсветка ссылок на один заголовок
	"markdown.validate.enabled": true, // подчёркивание битых ссылок на файлы и заголовки
	"markdown.updateLinksOnFileMove.enabled": "prompt", // спрашивать об изменении ссылки при перемещении/переименовании файла
	"markdown.experimental.updateLinksOnPaste": true, // умное копирование ссылок - они будут ссылаться на те же файлы

	// Notebook
	"search.experimental.closedNotebookRichContentResults": true, // поиск по закрытым файлам
	"notebook.cellToolbarVisibility": "hover", // показ панели добавления нового блока при наведении, без клика
	"notebook.lineNumbers": "on", // показ номера строк в ячейках с кодом
	"jupyter.askForKernelRestart": false, // отключение подтверждения при перезагрузке ядра Jupyter

///
//// полезные расширения
///
	// привязка к типам файлов
	"workbench.editorAssociations": {
		"*.bin": "hexEditor.hexedit" // открытие .bin в расширении Hex Editor
	},

	// Java
	"java.inlayHints.parameterNames.enabled": "all", // показ названий параметров в подсказках для методов и функций
	"files.exclude": { // добавляется автоматически расширением
		"**/.classpath": true,
		"**/.project": true,
		"**/.settings": true,
		"**/.factorypath": true
	},

	// Rust
	"debug.allowBreakpointsEverywhere": true, // без этого невозможно установить брейкпоинты (по крайней мере так было в 2022-ом)

	// markdownlint
	"markdownlint.config": {
		"MD033": false, // разрешить HTML
	},

	// Draw.io integration
	"hediet.vscode-drawio.theme": "Kennedy", // выбор стандартной белой темы

	// Code Spell Checker
	"cSpell.language": "en,ru",

	"": "", // нужно чтоб комментарии не ломались при добавлении новых параметров
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment