Настройка параметров VS Code после установки
Alexey S edited this page 2026-04-30 00:11:43 +03:00
This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Настройка параметров VS Code после установки

1. Итоговый конфиг VS Code (~/.config/Code/User/settings.json)

{
    // --- ПРОБЛЕМА С КЛАВИАТУРОЙ ---
    // например, не работает обратный слеш на цифровой клавиатуре в xrdp
    "keyboard.dispatch": "keyCode", 

    // --- НАВИГАЦИЯ (ОТКЛЮЧЕНО) ---
    "workbench.editor.enablePreview": false,                    // Открытие файла только по дабл-клику
    "workbench.editor.enablePreviewFromQuickOpen": false,       // Выключает превью при поиске (Ctrl+P)
    "list.openMode": "doubleClick",                             // Жестко задает дабл-клик для проводника
    "explorer.compactFolders": false,                           // Запрещает сворачивать пустые папки в одну строку
    "window.restoreWindows": "none",                            // Запрещает открывать последний проект или папку
    "files.associations": "jsonc",                              // Разрешить комментарии в JSON
    "explorer.autoReveal": false,                               // Запретить автоматическую синхронизацию открытого файла с его расположением в проводнике
    "debug.console.collapseIdenticalLines": false,              // Отключить сворачивание одинаковых строк в консоле отладки
                                                                // КАКОЙ ДОЛБАЁБ ВЫДУМЫВАЕТ ВСЮ ЭТУ ХУЙНЮ???
    "explorer.fileNesting.enabled": true,                       // Еще одна фигня, которую приходится настраивать!
    "explorer.fileNesting.expand": false,                       // Отвечает за группировку "связанных" файлов, как в Visual Studio
    "workbench.editor.openPositioning": "last",                 // Открывать закладки файла в конце

    // --- ШПИОНАЖ И ТЕЛЕМЕТРИЯ (ВЫРЕЗАНО) ---
    "telemetry.telemetryLevel": "off",                          // Полный запрет на отправку данных в MS
    "datLoss.telemetryLevel": "off",
    "workbench.enableExperiments": false,                       // Запрет на скрытые тесты новых фич на тебе
    "workbench.settings.enableNaturalLanguageSearch": false,    // Поиск по настройкам без серверов MS

    // --- ГИГИЕНА ПРОЕКТА (СКРЫВАЕМ МУСОР) ---
    "files.exclude": {
        "**/bin": true,                                         // Скрыть скомпилированный мусор
        "**/obj": true,
        "**/TemplateEngineHost": true,                          // Скрыть артефакты Visual Studio
        "**/.git": true                                         // (Опционально) скрыть папку самого гита
    },
    "search.exclude": {
        "**/bin": true,                                         // Не искать по мусорным файлам
        "**/obj": true
    },

    // --- GIT И АВТОМАТИЗАЦИЯ ---
    "git.enabled": true,
    "git.openRepositoryInParentFolders": "always",              // Видеть репозиторий, даже если открыта вложенная папка
    "security.workspace.trust.enabled": false                   // Убивает вопрос про "Доверяете ли вы авторам"
    
}

2. Горячие клавиши (~/.config/Code/User/keybindings.json)

Удобное сворачивание кода на цифровой блок:

  • editor.foldAll - Свернуть всё (Fold All) - Shift + NumPad -
  • editor.unfoldAll - Развернуть всё (Unfold All) - Shift + NumPad +
  • editor.fold - Свернуть текущий блок - Ctrl - NumPad -
  • editor.unfold - Развернуть текущий блок - Ctrl - NumPad

Управление закладками,

  • bookmarks.toggle - Alt+F2 - установить/снять закладку. В Linux XFCE комбинация Alt+F2 используется, поэтому идем в Настройки -> Клавиатура и удаляем ее там.
[
	// Отключить "Переход вперед
    {
        "key": "ctrl+alt+l",
        "command": "-bookmarks.jumpToNext",
        "when": "editorTextFocus"
    },
	// Включить F2
    {
        "key": "f2",
        "command": "bookmarks.jumpToNext",
        "when": "editorTextFocus"
    },
	// Отключить "Переход назад"
    {
        "key": "ctrl+alt+j",
        "command": "-bookmarks.jumpToPrevious",
        "when": "editorTextFocus"
    },
	// Включить Shift + F2
    {
        "key": "shift+f2",
        "command": "bookmarks.jumpToPrevious",
        "when": "editorTextFocus"
    },
    // Показать в панели проводника, очень полезная!
    {
        "key": "f4",
        "command": "workbench.files.action.showActiveFileInExplorer",
        "when": "editorTextFocus"
    }
]

3. Настройки Git

Добавление имени пользователя и адреса электронной почты текущего пользователя:


git config --global user.name "user_name"
git config --global user.email "mail@example.com"

Для флага --global данные пишутся в файл ~/.gitconfig

[user]
    name = user_name
    email = mail@example.com

4. Сниппеты

Настройки сниппетов C# лежат тут ~/.config/Code/User/snippets/csharp.json

Свойство get/set + summary

{
    "Свойство get/set + summary": {
		"prefix": "pr",
		"body": [
			"/// <summary>",
			"/// ${3:Описание ...}",
			"/// </summary>",
			"public ${1|string,Guid,bool,int,uint,long,ulong,decimal,DateTimeOffset,TimeSpan,DateOnly,TimeOnly|} $2 { get; set; }$0"
		]
	}
}

Документировани symmary

Встроенный сниппет добавляет к summary блок value (нахера???), поэтому используем свой

{
    "Документировани symmary": {
		"prefix": "summary",
		"body": [
			"/// <summary>",
			"/// ${1:Описание ...}",
			"/// </summary>"
		]
	}
}

Полное свойство с атрибутом Column

Принимает идентификатор snake_case, устанавливает атрибут [Column("<идентификатор>")], создает имя свойства в PascalCase

{

    "Полное свойство с атрибутом Column": {
		"prefix": "pp",
		"body": [
			"/// <summary>",
			"/// ${4:Описание ...}",
			"/// </summary>",
			"[Column(\"$1\")]",
			"public ${3|string,Guid,bool,int,uint,long,ulong,decimal,DateTimeOffset,TimeSpan,DateOnly,TimeOnly|} ${1/(_|^)([a-z0-9])|(_)/${2:/upcase}/g} { get; set; }$0"upcase}/g} { get; set; }$0"
		]
	}
}

Блок try/catch

{
    "Блок try/catch": {
		"prefix": "tr",
		"body": [
			"try",
			"{",
			"\tthrow new NotImplementedException();",
			"}",
			"catch (Exception ex)",
			"{",
			"\t$0throw;",
			"}"
		]
	}
}

Блок throw new NotImplementedException()

{
	"Блок throw new NotImplementedException()": {
		"prefix": "thr",
		"body": "throw new NotImplementedException();"
	}
}