Добро пожаловать в выпуск Visual Studio Code за июль 2023 г. В этой версии много обновлений, которые, мы надеемся, вам понравятся. Вот некоторые из ключевых моментов:

Если вы хотите прочитать эти примечания к выпуску в Интернете, перейдите в раздел Обновления на сайте code.visualstudio.com.

Инсайдеры. Хотите опробовать новые функции как можно скорее? Вы можете скачать ночную сборку Инсайдеры и опробовать последние обновления, как только они станут доступны.

Доступность

Улучшения в доступном представлении

Команда Открыть доступный просмотр (Alt+F2) позволяет пользователям программ чтения с экрана просматривать содержимое посимвольно, построчно. В последней версии мы добавили специальные виды для наведения курсора мыши на редактор и ответов в панели чата.

Теперь есть доступные представления для уведомлений, ответов в чате, вывода блокнота Jupyter и наведения на рабочую среду.

Когда элемент, предлагающий доступное представление, находится в фокусе, в метке ARIA отображается подсказка. Эту подсказку можно отключить для каждой функции с помощью настройки accessibility.verbosity.

Для удобной навигации между элементами на панели чата и в списке уведомлений предусмотрены команды Показать следующее в режиме расширенного просмотра (Alt+]) и Показать предыдущее в режиме расширенного просмотра (Alt+[).

Информация о символах хлебных крошек

После использования команды Фокус и выбор навигационных цепочек (breadcrumbs.focusAndSelect) навигация Навигационная цепочка теперь включает информацию о символах для программ чтения с экрана.

Контроль ввода и согласованность навигации по результатам

Навигация между элементом управления вводом (например, поиском или фильтрацией ввода) и его результатами теперь единообразна в представлении «Расширения», редакторе «Сочетания клавиш», а также на панелях «Комментарии», «Проблемы» и «Консоль отладки» с использованием (Ctrl+DownArrow) и (Ctrl+UpArrow). ).

Доступный просмотрщик различий

В редакторе различий Панель просмотра различий была переименована в Доступное средство просмотра различий. Доступная программа просмотра различий устраняет недостатки доступности редактора различий и может быть открыта с помощью F7 или команды Открыть доступную программу просмотра различий из меню Дополнительные действия редактора различий. Наряду с этим переименованием мы также исправили некоторые ошибки и добавили некоторые новые функции, такие как возможность запуска диалогового окна «Справка по специальным возможностям» или перехода к измененному редактору из средства просмотра.

Профили

Поддержка частичных профилей

Теперь вы можете создать профиль, в котором вы можете настроить только часть конфигураций (параметры, сочетания клавиш, фрагменты, задачи и расширения). Например, вы можете создать профиль со всеми конфигурациями, кроме сочетаний клавиш, и VS Code применяет сочетания клавиш из профиля по умолчанию, когда этот профиль активен.

На снимке экрана Создать новый профиль ниже флажок Сочетания клавиш снят и отображается сообщение Использование профиля по умолчанию. Любые сочетания клавиш, активные во время этого сеанса VS Code, не применяются к новому профилю.

Вы также можете создать частичный профиль при копировании из шаблона профиля или существующего профиля, используя раскрывающееся меню Копировать из.

Вы также можете настроить существующий профиль для использования конфигураций из профиля по умолчанию, отредактировав профиль в пользовательском интерфейсе Редактировать профиль.

При экспорте частичного профиля вы можете экспортировать только те конфигурации, которые настроены в профиле, или также включить конфигурации из профиля по умолчанию.

Применить настройку ко всем профилям

Теперь вы можете применить настройку ко всем профилям, выбрав параметр Применить настройку ко всем профилям в редакторе настроек.

Это применит значение настройки ко всем профилям. Любые обновления этого параметра из любого профиля применяются ко всем профилям. Вы можете отменить эту синхронизацию, сняв флажок с параметра Применить настройку ко всем профилям.

Применить расширение ко всем профилям

Теперь вы можете включить расширение во все профили, выбрав параметр Применить расширение ко всем профилям в представлении «Расширения».

Это делает это расширение доступным во всех профилях. Вы можете отменить это, сняв флажок с параметра Применить расширение ко всем профилям.

Идентификаторы команд файла JSON настроек, настроенные для профилей, отличных от настроек по умолчанию.

Команда Настройки: открыть настройки пользователя (JSON) (workbench.action.openSettingsJson) теперь открывает JSON-файл настроек конкретного профиля, когда пользователь находится в профиле, отличном от профиля по умолчанию. Чтобы отобразить настройки на уровне приложения, используйте команду Настройки: открыть настройки приложения (JSON) (workbench.action.openApplicationSettingsJson).

Верстак

Примечания к выпуску для предстоящего обновления

Каждый раз, когда ежемесячное стабильное обновление готово к установке, вы можете просмотреть примечания к выпуску с помощью команды Показать примечания к выпуску обновления в меню Управление (кнопка с шестеренкой) внизу. панели активности.

редактор

Вставка URL-адресов Markdown в виде отформатированных ссылок

Настройка markdown.editor.pasteUrlAsFormattedLink теперь имеет новую опцию smart. Функция вставки smart может обнаружить, когда вы вставляете в текст, где вам не требуется автоматическое форматирование ссылки Markdown. Некоторые ситуации, которые игнорируются при вставке smart, включают вставку внутри ссылки Markdown, поверх другой ссылки Markdown и внутри блока кода.

По умолчанию функция pasteUrlAsFormattedLink в настоящее время отключена (never), но вы можете изменить настройку на smart или always (всегда создавайте форматированную URL-ссылку).

Внедрение асинхронной токенизации

В обновлении 1.76 мы реализовали асинхронную токенизацию документов редактора на веб-воркере, чтобы повысить производительность процесса рендеринга. С тех пор мы исправили несколько ошибок, вызванных редкими состояниями гонки, и в этом выпуске начинаем внедрять эту функцию для пользователей стабильной версии.

Если вы не хотите ждать, вы можете установить editor.experimental.asyncTokenization на true, чтобы немедленно получить асинхронную токенизацию.

Редактор различий

В этой итерации мы продолжили работу над новым редактором различий и планируем постепенно представить его пользователям стабильной версии. Вы можете попробовать это немедленно, установив "diffEditor.experimental.useVersion2": true. Новый редактор различий включает в себя несколько новых функций и исправлений ошибок, описанных ниже.

Свернуть неизмененные регионы

Используйте diffEditor.experimental.collapseUnchangedRegions, чтобы включить скрытие неизмененных регионов в новом редакторе различий. Эта функция полезна при просмотре больших различий с большим количеством неизмененных строк.

Границы блоков скрытых линий можно перетаскивать или щелкать, чтобы отобразить текст снизу или сверху.

Выравнивание области различий

Новый редактор различий теперь выравнивает текст внутри областей различий, что значительно упрощает просмотр различий, в которых были изменены отступы и вставлены строки.

До (без включенного выравнивания области различий и различий по пробелам):

После (с выравниванием региона различий):

Новый алгоритм сравнения теперь включен по умолчанию.

Мы завершили внедрение нового алгоритма сравнения, который теперь используется по умолчанию в VS Code. О некоторых улучшениях алгоритма можно прочитать в Примечаниях к прошлым выпускам.

Дифференциальное шумоподавление

В этом обновлении мы добавили эвристику в новый алгоритм сравнения, чтобы уменьшить вероятность совпадения несвязанных слов.

Вот как редактор различий выглядел раньше (обратите внимание, что this совпадает с обеих сторон, хотя сопоставление бесполезно):

Вот как это выглядит теперь с эвристическими улучшениями (обратите внимание, что несвязанных совпадений стало меньше):

Сменить сторону

При использовании параллельного представления нового редактора различий теперь есть новая команда Редактор различий: переключить стороны, которая позволяет переходить с одной стороны на другую. При переключении сторон позиция курсора и текущий выбор в активном редакторе сопоставляются с другой стороной.

И есть еще

Ознакомьтесь с Примечаниями к выпуску 1.80 для более подробного описания того, что изменилось в новом редакторе различий!

Терминал

Пользовательское наведение на вкладке встроенного терминала

Вкладка встроенного терминала панели, которая отображается при наличии одного терминала, теперь использует настраиваемое наведение курсора для более единообразного внешнего вида и поддержки встроенных ссылок.

Управления источником

Поддержка репозиториев Git с помощью символических ссылок.

Судя по отзывам сообщества, теперь поддерживается поддержка репозиториев Git, на пути которых есть символические ссылки, с помощью параметра --path-format, добавленного к команде rev-parse Git в версии 2.31. Начиная с этого выпуска, все функции управления версиями (например, представление Source Control, обнаружение репозитория, добавленные/измененные/удаленные украшения редактора строк и т. д.) должны работать должным образом при открытии такого репозитория.

Отлаживать

JavaScript-отладчик

Поддержка диспетчера быстрых узлов (версий)

Отладчик JavaScript теперь поддерживает Fast Node Manager (fnm) во время выполнения. Пользователи fnm теперь могут установить свойство runtimeVersion launch.json для выбора версии Node.js.

Ноутбуки

Богатый поиск по содержимому закрытых блокнотов

В предыдущем выпуске мы представили поиск в рабочей области с богатым содержимым для открытых записных книжек. Теперь имеется поддержка предварительного просмотра, позволяющая также просматривать результаты с расширенным контентом для закрытых блокнотов.

При поиске текста в представлении «Поиск» предварительный просмотр результатов из блокнотов должен соответствовать тому, как строка выглядит при открытии редактора блокнотов. Обратите внимание, что результаты для входных данных будут отображаться только тогда, когда блокнот закрыт. Чтобы попробовать это, включите search.experimental.closedNotebookRichContentResults в настройках.

Улучшена производительность для больших потоковых результатов.

Мы улучшили производительность для выходных данных больших ячеек, которые передаются в потоковом режиме во время выполнения. Это уменьшает объем операций рендеринга, но в настоящее время применимо только к выходным данным прокручиваемых ячеек.

Липкий прокрутка ноутбука

В этом выпуске представлена ​​первая версия «липкой прокрутки» для редактора блокнотов. Липкая прокрутка в верхней части редактора блокнота показывает заголовки Markdown для ячейки или выходных данных ячейки, которые в данный момент видны. Выбор липкой «линии» прокрутки фокусирует эту ячейку, позволяя быстро перемещаться по записной книжке. Эта функция включается с помощью настройки notebook.stickyScroll.enabled или команды Вид: переключение липкой прокрутки блокнота.

VS-код для Интернета

Всегда загружайте последние версии встроенных расширений.

vscode.dev теперь всегда загружает последние версии встроенных расширений. Это означает, что вы больше не увидите уведомление Требуется перезагрузка для обновления встроенных расширений до последней версии при открытии vscode.dev.

Удаленная разработка

Расширения удаленной разработки позволяют вам использовать Контейнер разработки, удаленный компьютер через SSH или Удаленные туннели или Подсистему Windows для Linux (WSL) в качестве полнофункциональной среды разработки.

Основные моменты включают в себя:

  • Установите удаленные туннели как услугу из VS Code.
  • Упрощенная установка @devcontainers/cli.
  • Запишите зависимости функций контейнера разработки в файле блокировки.

О новых функциях расширения и исправлениях ошибок вы можете узнать в Примечаниях к выпуску удаленной разработки.

Вклад в расширения

GitHub второй пилот

Улучшения пользовательского интерфейса быстрого чата

В этой версии интерфейс быстрого чата был обновлен.

Как и раньше, вы можете переключить этот вид с помощью Ctrl+Shift+I. Конкретные улучшения включают в себя:

  • Разговорный чат. В режиме быстрого чата теперь отображается весь разговор, сохраняя при этом последний вопрос и ответ.
  • Завершение команды с косой чертой: теперь при вводе / для команд с косой чертой можно выполнять завершение.

Кроме того, существует экспериментальная настройка chat.experimental.defaultMode, позволяющая контролировать отображение частей чата. У него есть три варианта:

  • chatView – отображение значка чата на панели действий, чтобы запустить чат в представлении чата (по умолчанию).
  • quickQuestion – отображение значка чата в строке заголовка для запуска быстрого чата.
  • both – отображаются оба значка чата, что позволяет открыть любой из интерфейсов чата.

Мы хотим знать ваше мнение об этой настройке и о работе быстрого чата в целом, поэтому не стесняйтесь открывать проблемы с отзывами.

Улучшения команды Slash

Мы внесли следующие улучшения в удобство использования слэш-команд на панели, в строке и в быстром чате:

  1. Команды косой черты теперь отображаются как блоки и могут быть удалены одним возвратом.
  2. При принятии косых команд из списка предложений, таких как /clear и /help, теперь команда выполняется, что устраняет необходимость явно отправлять запрос в чат после принятия завершения.
  3. Команда косой черты /createWorkspace на панели чата повторно заполняется во входных данных чата после того, как она впервые используется в вопросе, что позволяет легко задавать дополнительные вопросы о вашем рабочем пространстве.

Следующая запись иллюстрирует все три улучшения:

Итеративное исправление

При использовании команды /fix вы можете включить итеративное исправление с помощью настройки github.copilot.editor.iterativeFixing. Если при включенном итеративном исправлении после первого исправления в выборке остаются диагностические ошибки, исправление запускается второй раз. Этот параметр включен по умолчанию.

Улучшения поколения ноутбуков

При создании записной книжки выполняются дополнительные действия для улучшения качества сгенерированного кода, а также исправления диагностики, обнаруженной в сгенерированном коде с помощью языковых расширений. По умолчанию это отключено, но его можно включить с помощью следующих настроек:

"github.copilot.notebook": {
  "iterativeFixing": true,
  "iterativeImproving": true
}

Встроенный чат

При использовании встроенного чата теперь вы можете включать и отключать просмотр различий с помощью настройки inlineChat.showDiff. Вы можете щелкнуть правой кнопкой мыши встроенный чат, чтобы отобразить контекстное меню и изменить этот параметр.

Контекст терминала

Copilot Chat теперь знает о буфере и выборе активного терминала.

Питон

Устойчивое к ошибкам обнаружение pytest

В рамках внедрения нашей новой архитектуры тестирования панель Test Explorer теперь поддерживает устойчивое к ошибкам обнаружение pytest. Если во время обнаружения pytest выдает ошибку, которую можно обработать, например ошибку неизвестного импорта, все остальные тесты все равно будут обнаружены за пределами файла с ошибкой. Эта функция доступна только в новой тестовой версии, которая все еще находится на стадии эксперимента. В настоящее время перезапись активна для 100 % инсайдеров и 25 % пользователей стабильной версии, но в ближайшее время она будет принята повсеместно. А пока вы можете принять или отказаться от участия с помощью настройки pythonTestAdapter.

Конфигурация отладчика для запуска файлов с аргументами

Новое расширение Debugpy теперь предоставляет конфигурацию Файл Python с аргументами launch.json, которая полезна, когда вы хотите предоставить разные входные значения для вашего файла Python без изменения кода или конфигурации отладчика при каждом запуске. это.

Чтобы использовать эту конфигурацию, убедитесь, что у вас установлено расширение Debugpy. Откройте представление Выполнение и отладка, нажав Ctrl+Shift+D, и выберите либо Создать файл launch.json, либо значок шестеренки, чтобы получить доступ к файлу launch.json. Выберите Debugpy, а затем выберите Python: файл с аргументами из доступных конфигураций.

Теперь, когда вы хотите отладить (F5) файл Python, которому требуются аргументы командной строки, появится приглашение, позволяющее ввести нужные аргументы для передачи в файл Python.

После ввода аргументов нажмите Enter, и запустится отладчик, позволяющий вам выполнить весь код.

Тема: Котпучин Маккиато (предварительный просмотр на vscode.dev)

пакет npm для API расширения Python

Расширение Python теперь предоставляет пакет npm, упрощающий другим авторам расширений доступ и отслеживание изменений в API расширений Python. Ознакомьтесь с модулем npm @vscode/python-extension для работы со средами Python, доступными на компьютере пользователя.

Контейнер разработки для расширения Python

Теперь для расширения Python существует Dev Container с официальным образом Microsoft Node.js. С помощью этого пользовательского контейнера разработки пользователи могут открыть репозиторий расширений Python в кодовом пространстве GitHub и мгновенно начать работу над разработкой и тестированием расширения Python, без необходимости установки. Версии Python 3.7, 3.8, 3.9, 3.10 и 3.11 предустановлены, поэтому пользователи могут легко переключаться между версиями Python с помощью pyenv.

Юпитер

Подключитесь к серверу Jupyter в Codespace.

При работе с блокнотом Jupyter на github.dev теперь вы можете подключиться к серверу Jupyter, работающему в экземпляре GitHub Codespace, через средство выбора ядра.

Продолжить с незафиксированными изменениями

Вы можете переключиться на базовое пространство кода, нажав кнопку Продолжить на панели инструментов блокнота, и все незафиксированные изменения в рабочем пространстве будут перенесены в пространство кода.

Запросы на извлечение GitHub и проблемы

Был достигнут больший прогресс в расширении GitHub Pull Requests and Issues, которое позволяет вам работать, создавать и управлять запросами на включение и проблемами. В этой итерации мы сосредоточились на обновлении представления Создать, чтобы сделать его более понятным и полезным.

Улучшения в представлении Создать включают в себя:

  • Представление пытается определить наилучшую базовую ветку для вашего PR вместо того, чтобы всегда использовать ветку по умолчанию.
  • Вы можете добавлять рецензентов, ответственных лиц, ярлыки и этапы в свой PR из представления Создать.
  • По умолчанию запоминается ваш последний «вариант создания» (например, черновик или автоматическое объединение).
  • Производительность просмотра намного выше.
  • Вы можете просмотреть различия перед публикацией своей ветки.
  • После публикации ветки вы также сможете просмотреть коммиты (скоро это появится и для неопубликованных веток).

Просмотрите журнал изменений для версии 0.70.0 расширения, чтобы узнать о других основных моментах.

Аутентификация GitHub

Отзыв токенов GitHub OAuth при выходе из системы

Раньше, когда вы выходили из учетной записи GitHub в VS Code, из хранилища секретов удалялись только токены OAuth. Токен по-прежнему действителен и может отправлять запросы к API GitHub. Чтобы повысить безопасность управления токенами, мы теперь пытаемся удалить токен на сервере, делая токен недействительным после выхода из системы.

Разработка расширений

showSetting и focusSearch добавлены в IOpenSettingsActionOptions.

Расширения теперь могут передавать объект revealSetting и логическое значение focusSearch в такие команды, как workbench.action.openSettingsJson, которые принимают IOpenSettingsActionOptions аргументы.

Например, следующая команда

vscode.commands.executeCommand('workbench.action.openSettingsJson', { revealSetting: { key: 'editor.renderWhitespace' }});

открывает JSON-файл пользовательских настроек, а затем показывает настройку editor.renderWhitespace, если она существует.

Новый метод TestController.invalidateTestResults

Расширения тестов могут вызывать новый метод TestController.invalidateTestResults, чтобы указать пользователю, что какие-либо результаты одного или нескольких тестов больше не могут быть применимы. Например, расширение может делать что-то вроде:

onFileChange(uri => {
  // invalidate tests in a file when a file changes:
  testController.invalidateTestResults(getTestsInFile(uri));
})
onConfigurationChange(() => {
  // invalidate results for all tests:
  testController.invalidateTestResults();
});

Аутентификация Kerberos для сетевого прокси

Расширения, использующие модуль https Node.js, теперь могут использовать сетевые прокси, требующие аутентификации Kerberos. На локальном компьютере должен быть настроен Kerberos, но расширениям не нужно ничего делать, чтобы использовать эту функцию.

В случаях, когда автоматически выбранное имя субъекта-службы не работает, пользователь может указать его с настройкой http.proxyKerberosServicePrincipal:

Иконки в QuickPickItem доработаны

API для иконок в QuickPickItem был доработан. Теперь вы можете использовать свойство iconPath для отображения значков в QuickPickItems.

Инженерное дело

Сокращение кода VS с искажением имени

Недавние инженерные усилия позволили сократить размер поставляемого JavaScript VS Code на 20%. В статье блога Сокращение VS-кода с искажением имен вы можете узнать, как инженеры VS Code Мэтт Бирнер и Йоханнес Рикен исследовали искажение имен идентификаторов для оптимизации размера кода и нашли эффективное решение с использованием TypeScript.

Дополнительные улучшения хоста pty

Продолжая улучшения прошлого месяца в хосте pty, были сделаны следующие улучшения:

  • Производительность
  • Хост pty теперь запускается только тогда, когда это необходимо, поэтому пользователи, которые никогда не открывают терминал, сэкономят около 50–100 МБ.
  • Дальнейшее распараллеливание переподключения терминала, ускорение времени инициализации терминала.
  • Выходные сообщения терминала теперь буферизуются, что уменьшает трафик, идущий от хоста pty и окна, в котором размещен терминал.
  • Диагностика
  • Статистика задержки между каждым процессом регистрируется на уровне журнала трассировки.
  • Идентификатор окна записывается во все журналы выходного канала Терминала.
  • При ведении журнала RPC хоста Pty теперь регистрируются ответы, которые не удалось выполнить в результате исключения.

Заметные исправления

  • 133542 Подключен не к тому терминалу
  • 168021 Улучшенное завершение объектов в отладчике JavaScript.
  • 184894 Невозможно щелкнуть и перетащить полосу прокрутки в терминале.

Спасибо

И последнее, но не менее важное: большое Спасибо авторам VS Code.

Отслеживание проблем

Вклад в наше отслеживание проблем:

Запросы на вытягивание

Вклад в vscode:

Вклад в vscode-extension-samples:

Вклад в vscode-hexeditor:

  • @лорсанта
  • исправлено: прокрутка вверх при нажатии клавиши Домой PR #448
  • Исправлено: счетчик выбора обновляется при переключении между группами вкладок. ПР №449

Вклад в vscode-js-debug:

Вклад в vscode-pull-request-github:

  • @mgyucht (Miles Yucht): корректно перебирать различия между файлами PR #5036 в обратном направлении.

Вклад в vscode-vsce:

  • @drewbrokke (Drew Brokke): (#868) опция публикации — пропуск-дубликат не учитывает целевые платформы PR #873

Вклад в inno-updater:

Вклады в language-server-protocol:

Вклад в monaco-editor: