이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

2022년 3월 (버전 1.66)

업데이트 1.66.1: 이 업데이트는 다음의 이슈를 해결합니다.

업데이트 1.66.2: 이 업데이트는 다음의 보안 이슈를 해결합니다.

다운로드: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Code의 2022년 3월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러분이 좋아할 만한 많은 업데이트가 포함되어 있으며, 주요 내용은 다음과 같습니다.

이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com업데이트로 이동하십시오.

릴리스 파티 시청: VS Code 팀이 새로운 기능에 대해 논의하는 것을 들어보세요. 이벤트 녹화본은 YouTube 채널에서 확인할 수 있습니다.

주요 내용 요약: 60초만 투자하여 최신 정보를 확인하세요. YouTube 채널에서 3월 VS Code 릴리스 주요 내용 비디오를 시청하면 무엇이 새로 나왔는지 빠르게 확인할 수 있습니다.

Insider: 새로운 기능을 최대한 빨리 사용해 보고 싶으신가요? 야간 빌드인 Insider 빌드를 다운로드하고 사용 가능한 최신 업데이트를 즉시 사용해 보세요.

접근성

팀은 VS Code를 가장 접근성 높은 편집기 중 하나로 만들기 위해 노력하고 있습니다. 이번 릴리스에는 사용 편의성과 접근성을 개선하는 여러 가지 업데이트가 포함되어 있습니다.

워크벤치

로컬 기록

이제 타임라인 보기에 파일의 로컬 기록이 제공됩니다. 설정된 구성에 따라 편집기를 저장할 때마다 목록에 새 항목이 추가됩니다.

각 로컬 기록 항목에는 항목이 생성된 시점의 파일 전체 내용이 포함되며, 특정 경우에는 더 의미론적인 정보(예: 리팩터링 표시)를 제공할 수 있습니다.

항목에서 다음 작업을 수행할 수 있습니다.

  • 변경 사항을 로컬 파일 또는 이전 항목과 비교합니다.
  • 내용을 복원합니다.
  • 항목을 삭제하거나 이름을 변경합니다.

로컬 기록 작업을 위한 새로운 전역 명령이 있습니다.

  • workbench.action.localHistory.create - 사용자 지정 이름으로 활성 파일에 대한 새 기록 항목을 만듭니다.
  • workbench.action.localHistory.deleteAll - 모든 파일의 모든 기록 항목을 삭제합니다.
  • workbench.action.localHistory.restoreViaPicker - 모든 파일에 대한 복원할 기록 항목을 찾습니다.

이 명령들은 기본 키 바인딩이 없지만, 키보드 단축키를 직접 추가할 수 있습니다.

로컬 기록 작업을 위한 새로운 설정도 있습니다.

  • workbench.localHistory.enabled - 로컬 기록을 활성화하거나 비활성화합니다 (기본값: true).
  • workbench.localHistory.maxFileSize - 로컬 기록 항목을 만들 때의 파일 크기 제한 (기본값: 256 KB).
  • workbench.localHistory.maxFileEntries - 파일당 로컬 기록 항목 제한 (기본값: 50).
  • workbench.localHistory.exclude - 로컬 기록에서 특정 파일을 제외하기 위한 Glob 패턴.
  • workbench.localHistory.mergeWindow - 로컬 파일 기록의 마지막 항목에 추가 변경 사항이 포함되는 시간 간격 (기본값 10s).

타임라인 보기 도구 모음의 새 필터 작업을 통해 개별 공급자를 활성화하거나 비활성화할 수 있습니다.

Timeline filter drop down with Git History unchecked and Local History checked

참고: 로컬 기록 항목은 VS Code 사용 방식에 따라 다른 위치에 저장됩니다. 로컬 파일을 열 때 항목은 로컬 사용자 데이터 폴더에 유지되고, 원격 파일을 열 때에는 원격 사용자 데이터 폴더에 저장됩니다. 파일 시스템을 사용할 수 없을 때(예: 웹용 VS Code 사용 시 일부 사례) 항목은 IndexedDB에 저장됩니다.

설정 편집기

언어 필터

이제 사용자는 설정 편집기 검색 상자에 @lang:languageId를 입력하여 languageId로 식별되는 언어에 대해 구성할 수 있는 모든 설정을 보고 편집할 수 있습니다. 이를 통해 사용자는 언어별 재정의(language overrides)라고도 알려진 언어별 설정을 볼 수 있습니다.

이러한 재정의는 기어 아이콘을 클릭하고 설정을 재설정할 때까지 명시적으로 재설정될 때까지 구성됩니다.

아래의 짧은 비디오는 언어 필터를 @lang:css로 설정하여 가능한 모든 CSS 언어 재정의 설정을 표시합니다.

테마: Light Pink

작업 영역 및 폴더 설정 보존

이제 설정 편집기의 작업 영역 및 폴더 설정은 사용자가 수동으로 재설정할 때까지 유지됩니다. 이 변경은 사용자가 설정의 기본값과 같지만 사용자 설정 값과는 다른 특정 작업 영역 설정 값을 명시적으로 지정하려는 경우에 도움이 됩니다. 이전에는 사용자가 이 값을 설정하기 위해 작업 영역 설정 JSON 파일을 열어야 했습니다.

아래의 편집기 탭 크기는 설정 편집기의 작업 영역 탭에서 설정되며, 작업 영역의 settings.json 파일에 자동으로 추가됩니다.

테마: Light Pink

기본 알림 버튼

알림의 첫 번째 버튼이 이제 다른 버튼과 구별하기 위해 기본 색상으로 표시됩니다. 이는 대화 상자와 동일한 패턴을 따릅니다.

Notification where first button is displayed as green primary color

테마: GitHub Dark

편집기용 새 컨텍스트 키

편집기 그룹에서 첫 번째 또는 마지막 편집기인지 여부를 나타내는 새로운 컨텍스트 키가 있습니다.

  • activeEditorIsFirstInGroup - 활성 편집기가 그룹의 첫 번째인지 여부.
  • activeEditorIsLastInGroup - 활성 편집기가 그룹의 마지막인지 여부.

이러한 컨텍스트 키는 when 절을 사용하여 키보드 단축키를 조건부로 활성화하는 데 사용할 수 있습니다.

기본 이진 편집기

새로운 설정인 workbench.editor.defaultBinaryEditor를 사용하면 이진 파일 경고를 우회하고 이진 파일이 감지되었을 때 원하는 편집기 유형을 자동으로 열 수 있습니다. 설정 편집기 드롭다운에서 또는 settings.json의 IntelliSense를 통해 기본 이진 편집기 ID를 선택할 수 있습니다.

더 부드러운 인증 환경

GitHub 및 Microsoft의 인증 흐름이 더 부드러워진 것을 알 수 있습니다.

  • GitHub 인증의 경우, 초기 계속 페이지를 제거하여 로그인 경험에 필요한 단계를 줄였습니다.
  • Microsoft 인증의 경우, 설정 동기화 또는 다른 확장 프로그램에 이미 Microsoft로 로그인했다면 VS Code에서 로그인을 위해 이동해야 하는 횟수를 최소화하려고 합니다.

CLI에서 미리 보기 및 일반 확장 프로그램 함께 설치

VS Code는 이제 명령줄에서 미리 보기 버전과 일반 버전의 확장 프로그램을 함께 설치하는 것을 지원합니다. 예를 들어, 다음 명령줄 지침은 GitHub.vscode-pull-request-github 확장 프로그램의 미리 보기 버전과 GitHub.remotehub 확장 프로그램의 릴리스 버전을 설치합니다.

code --install-extension GitHub.vscode-pull-request-github@prerelease --install-extension GitHub.remotehub

플랫폼별 확장 프로그램 업데이트 개선

VS Code는 이제 플랫폼별 확장 프로그램을 더 특정 대상 플랫폼 버전으로 업데이트하는 것을 지원합니다. 예를 들어, Windows 64비트에서 Windows 32비트용으로 설치된 C/C++ 확장 프로그램이 있고 Marketplace에 동일한 버전의 Windows 64비트용 확장 프로그램이 있는 경우, VS Code는 확장 프로그램을 64비트 버전으로 자동 업데이트합니다.

오디오 큐 개선

새로운 설정 audioCues.volume (0-100, 기본값 50)을 사용하여 오디오 큐의 볼륨을 제어할 수 있습니다. 또한 접힌 영역에 대한 오디오 큐가 업데이트되었습니다.

사이드 패널 및 사이드 바 새 이름

두 릴리스 전에 사이드 패널을 도입했습니다. 당시 터미널이 포함된 하단 패널을 사이드로 이동하는 기능을 제거하고 새로운 일관된 명령으로 대체했습니다. 사용자 피드백을 경청한 결과, 이 결정이 중요한 워크플로를 중단시킨다는 것을 파악하고 해당 변경을 되돌리기로 결정했습니다.

이에 따라 두 개의 패널, 즉 패널과 사이드 패널이 있었고 둘 다 워크벤치의 측면에 위치할 수 있었습니다. 이를 설명하고 새로운 사이드 패널의 방향을 더 잘 반영하기 위해 사이드 바와 사이드 패널의 명칭을 업데이트하기로 결정했습니다. 사이드 바는 이제 UI에서 기본 사이드 바(Primary Side Bar)로, 사이드 패널은 이제 보조 사이드 바(Secondary Side Bar)로 불립니다.

  • 사이드 바 -> 기본 사이드 바
  • 사이드 패널 -> 보조 사이드 바

이 이름들은 메뉴와 명령에 반영되지만, 기존 키 바인딩을 방해하지 않기 위해 명령 ID는 변경되지 않았습니다.

Command Palette drop down displaying both primary and secondary focus side bar commands

모션 감소 모드

이제 OS의 모션 감소 설정이 활성화되었을 때 애니메이션을 줄여 렌더링하는 워크벤치가 지원됩니다. 이 설정은 workbench.reduceMotion 설정(값: on, off, 기본값 auto)으로 재정의하거나 비활성화할 수 있습니다.

주석

댓글 UI는 GitHub Pull Requests and Issues 확장 프로그램에서 이슈 및 풀 요청에 댓글을 추가하는 데 광범위하게 사용되지만, 모든 확장 프로그램에서 채택할 수 있습니다.

댓글 보기 검색 용이성

주석이 있는 파일을 열면 **댓글** 보기가 표시됩니다. 이 기능은 comments.openView 설정으로 제어할 수 있습니다.

댓글 추가 검색 용이성

이제 줄의 아무 부분에나 주석을 추가할 수 있는 곳에 마우스를 올리면 왼쪽 여백에 **+** 기호가 표시됩니다.

댓글 접근성 개선

댓글에 대한 여러 접근성 개선 사항이 있습니다.

  • 주석이 가능한 범위에 있을 때 주석을 생성하기 위한 현재 줄에 댓글 추가 명령.
  • 댓글 스레드의 개수와 스레드 레이블을 포함하는 댓글 스레드에 대한 ARIA 레이블.
  • 다음 댓글 스레드로 이동 명령은 댓글 스레드 컨트롤에 초점을 맞춥니다.
  • 새로운 이전 댓글 스레드로 이동 명령.
  • 다음 및 이전 명령에 대한 키보드 단축키: Alt+F9Shift+Alt+F9.

터미널

모든 검색 일치 항목 표시

터미널에서 검색할 때 검색어의 모든 인스턴스가 이제 강조 표시됩니다. 현재 선택된 일치 항목도 별도로 사용자 지정할 수 있는 특정 강조 표시가 있습니다.

terminal.findMatch로 시작하는 색상 사용자 지정화를 통해 강조 표시 색상의 모양을 미세 조정할 수 있습니다.

A yellow border is shown around all matches except for the currently selected one, which has a red border.

스크롤 막대 주석

이제 터미널 스크롤 막대에 주석이 표시되어 버퍼에서 관심 지점을 나타냅니다.

예를 들어, 검색 결과는 스크롤 막대에 해당 주석이 있습니다.

The terminal scroll bar displaying brown annotations for find matches within a file

셸 통합 미리 보기 기능이 활성화되면 스크롤 막대에 실행되는 각 명령에 대한 주석이 표시됩니다.

Commands are run and corresponding annotations appear in the scroll bar

명령 탐색 개선

오래전부터 존재했던, 터미널에서 명령 간에 빠르게 이동하는 기능은 잘 알려지지 않은 기능입니다. 원래는 Enter를 눌렀을 때를 기준으로 했지만, 이제 셸 통합이 활성화되면 셸 통합 지식을 사용하여 더 안정적으로 올바른 줄을 식별하도록 업그레이드되었습니다. 또한 명령 간에 이동할 때 UI 피드백이 표시됩니다.

이 기능은 다음 키 바인딩을 통해 액세스할 수 있습니다.

  • macOS: Cmd+Up/Down
  • Linux/Windows: Ctrl+Up/Down (새로 추가됨)

Shift 키를 누른 상태로 터미널에서 명령 간에 선택할 수 있습니다.

복사된 텍스트가 HTML 스타일 유지

리치 텍스트를 터미널에서 복사하려면 터미널: HTML로 선택 복사 명령을 실행하거나 터미널 컨텍스트 메뉴 항목 HTML로 복사를 사용합니다.

최소 대비 비율 기본값 변경

terminal.integrated.minimumContrastRatio 설정은 이전부터 존재했으며, 백그라운드 색상에 따라 터미널의 전경 색상을 동적으로 변경합니다. 이번 릴리스에서는 터미널이 테마에 관계없이 접근 가능하도록 기본값을 4.5 (WCAG AA)로 변경했습니다. 이로 인해 색상에 문제가 발생하는 경우 "terminal.integrated.minimumContrastRatio": 1로 설정하여 기능을 비활성화할 수 있습니다.

소스 제어

소스 제어 리포지토리 보기

이전에는 소스 제어 리포지토리 보기의 리포지토리가 여러 리포지토리가 있는 폴더/작업 영역을 열 때 검색되는 순서대로 정렬되었습니다. 검색 순서가 달라질 수 있고 리포지토리가 무작위 순서로 나타나기 때문에 문제가 있었습니다. 이번 마일스톤에서는 리포지토리가 소스 제어 리포지토리 보기에서 항상 이름순으로 정렬됩니다.

편집기

인라인 완성으로 빠른 제안

editor.quickSuggestions 설정은 이제 inline을 구성 값으로 허용합니다. inline으로 설정하면, 빠른 제안(IntelliSense)은 입력할 때 제안 위젯을 표시하는 대신 유령 텍스트로 완성 항목을 표시합니다.

테마: GitHub Light

커서 인덱스용 스니펫 변수

새로운 스니펫 변수 $CURSOR_INDEX$CURSOR_NUMBER가 있습니다. 이들은 해당 커서의 인덱스를 나타냅니다. 후자는 1부터 시작하고, 전자는 0부터 시작합니다. 이 변수들의 강력함은 여러 커서와의 조합에 있습니다.

예를 들어, 아래 스니펫은 각 커서에 대해 번호가 매겨진 목록 항목을 추가합니다.

"ordered_list": {
  "scope": "markdown",
  "prefix": "ol",
  "body": [
    "$CURSOR_NUMBER. $0"
  ],
  "description": "Add ordered list"
}

업데이트된 소스 제어 장식

소스 제어 장식의 접근성을 높이기 위해 수정된 줄에 대한 새 패턴을 추가하고 모든 장식의 대비를 높였습니다.

괄호 쌍 색상 지정

새로운 설정 editor.bracketPairColorization.independentColorPoolPerBracketType이 있습니다. true로 설정하면 각 괄호 유형({ ... } 또는 ( ... ))이 색상 지정을 위해 자체 색상 풀을 사용합니다. 따라서 다른 유형의 중첩된 괄호는 동일한 색상을 갖게 됩니다.

A screenshot that demonstrates independent color pools turned on

A screenshot that demonstrates independent color pools turned off

언어 감지 개선

지난 반복에서, 열었던 파일 유형을 고려하는 새로운 언어 감지 전략을 사용할지 여부를 구성하기 위한 설정 workbench.editor.historyBasedLanguageDetection을 추가했습니다. 이 설정은 이제 기본값으로 활성화되었으며, 새로운 설정 workbench.editor.preferHistoryBasedLanguageDetection이 이 전략의 결과를 더 우선적으로 고려하도록 추가되었습니다.

웹용 VS Code

폴더 드래그 앤 드롭

이제 vscode.dev 또는 insiders.vscode.dev에서 열린 브라우저 창에 로컬 파일과 폴더를 드래그 앤 드롭하여 콘텐츠에 액세스할 수 있습니다 (웹 파일 시스템 액세스 API를 지원하는 브라우저). 이는 편집기 영역이나 파일 탐색기 모두에서 작동합니다.

원격 저장소

확장 프로그램 리팩터링

이전에는 Azure Repos 확장 프로그램이 GitHub Repositories 확장 프로그램에 직접 의존했습니다. Azure Repos 및 GitHub Repositories는 이제 GitHub 및 Azure Repos 전반의 공통 워크플로를 지원하는 공통 확장 프로그램인 Remote Repositories에 의존합니다. 이전에 GitHub Repositories 확장 프로그램이 제공했던 모든 API는 이제 Remote Repositories에서 제공합니다.

리포지토리 동기화 알림

커밋되지 않은 변경 사항이 있는 리포지토리를 다시 열면 기본적으로 Remote Repositories는 최신 버전의 리포지토리를 표시하지 않습니다. 이제 리포지토리를 수동으로 동기화하는 대화 상자를 표시하여 리포지토리를 GitHub 또는 Azure Repos의 최신 상태로 유지합니다. remoteHub.uncommittedChangesOnEntry 설정을 사용하여 이 대화 상자를 제어할 수 있습니다.

Reminder to sync your repository

테마: One Monokai

Azure Repos

이번 마일스톤에서는 Azure Repos에 호스팅된 리포지토리에 대한 변경 사항을 편집하고 커밋하는 기능을 활성화합니다. 또한 Azure Repos에 대한 풀 요청을 생성, 업데이트 및 여는 기본적인 기능도 추가되었습니다.

노트북

스크롤 막대에서 장식 찾기

이제 노트북에서 찾기 결과가 스크롤 막대에 렌더링됩니다.

대화형 창으로 포커스 이동

대화형 창으로 포커스를 이동하는 두 가지 새로운 명령이 있습니다.

  • interactive.input.focus - 대화형 창의 입력 편집기로 포커스를 이동합니다.
  • interactive.history.focus - 대화형 창의 기록으로 포커스를 이동합니다.

이 명령들은 기본 키 바인딩이 없지만, 키보드 단축키를 직접 추가할 수 있습니다.

디버깅

JavaScript 디버깅

JavaScript 디버거는 이제 힙 프로필 수집 및 시각화를 지원합니다. 힙 프로필을 통해 시간 경과에 따른 메모리 할당 위치와 양을 확인할 수 있습니다. 이는 디버그: 성능 프로필 가져오기 명령 옵션으로 추가되었으며, CALL STACK 보기의 레코드 ⏺ 버튼을 통해서도 액세스할 수 있습니다.

Example of the Flame Chart visualizer showing a memory profile for vscode. One cell is hovered over, showing that 33KB of memory was allocated in "ipc.ts".

언어

CSS 포맷터

내장 CSS 확장 프로그램에 이제 포맷터가 포함되었습니다. 이 포맷터는 CSS, LESS 및 SCSS에서 작동합니다. JS Beautify 라이브러리로 구현되었으며 다음과 같은 설정을 제공합니다.

  • css.format.enable - 기본 CSS 포맷터를 활성화/비활성화합니다.
  • css.format.newlineBetweenRules - 규칙 세트 사이에 빈 줄을 넣습니다.
  • css.format.newlineBetweenSelectors - 선택기 사이에 새 줄을 넣습니다.
  • css.format.spaceAroundSelectorSeparator - 선택기 구분 기호 '>', '+', '~' 주변에 공백이 있도록 합니다 (예: a > b).

동일한 설정이 lessscss에도 적용됩니다.

HTML에서 JavaScript 의미론적 강조 표시

HTML 파일의 JavaScript 소스에 대한 의미론적 강조 표시를 일반 .js 파일에서 보는 것과 동일하게 조정했습니다.

이를 통해 코드 색상이 더 일관될 뿐만 아니라, 이전에는 누락되었던 읽기 전용 유형 강조 표시와 같은 중요한 의미론적 정보도 추가되었습니다.

TypeScript 4.6.3

VS Code는 이제 TypeScript 4.6.3을 번들로 제공합니다. 이 마이너 업데이트는 몇 가지 중요한 버그를 수정합니다.

Markdown에서는 링크 텍스트가 링크 정의 ID와 일치하는 경우 약식 구문을 사용하여 링크를 만들 수 있습니다. 예를 들어, [my fancy link]my fancy link 링크 정의(예: [my fancy link]: https://example.com)를 사용합니다. 이러한 약식 링크는 이제 VS Code 편집기에서 클릭 가능합니다.

편집기에서 이러한 링크를 클릭하면 링크 정의로 이동합니다. Markdown 미리 보기에서는 링크가 대신 링크 대상으로 이동합니다.

reStructuredText 문법

이제 reStructuredText (rst) 파일 구문 강조 표시를 위한 내장 확장 프로그램이 있습니다.

reStructuredText example showing syntax highlighting

확장 프로그램 기여

Python

상태 표시줄의 인터프리터 표시 변경 사항

Python 확장 프로그램은 다른 언어와의 일관성을 위해 선택된 Python 인터프리터 정보를 상태 표시줄의 오른쪽으로 이동하여 **Python** 언어 상태 항목 옆에 배치했습니다. 상태 표시줄을 정리하기 위해 Python 또는 settings.json 파일이 현재 열려 있을 때만 표시됩니다.

Python interpreter information displayed towards the right of the Status bar

새 Python 파일 명령

이제 빈 Python 파일을 만드는 더 빠른 두 가지 방법이 있습니다: Python: 새 Python 파일이라는 새 명령을 통하거나, 시작하기 페이지새 파일... 항목을 통해 만들 수 있습니다.

Pylint 확장 프로그램

이제 pylint를 사용하여 린팅하는 Microsoft의 새 Pylint 확장 프로그램이 있습니다. 이 확장 프로그램은 언어 서버 프로토콜을 활용하여 린팅 지원을 제공합니다.

Pylint 확장 프로그램은 pylint를 통해 보고된 문제의 심각도 수준을 조정하기 위한 추가 구성을 제공합니다.

{
    "convention": "Information",
    "error": "Error",
    "fatal": "Error",
    "refactor": "Hint",
    "warning": "Warning",
    "info": "Information",
    "W0611": "Error",
    "unused-import": "Error"
}

참고: Python 확장 프로그램에서 Pylint를 활성화한 경우 문제 패널에 동일한 문제에 대한 두 개의 항목이 표시될 수 있습니다. "python.linting.pylintEnabled": false로 설정하여 내장 린팅 기능을 비활성화할 수 있습니다.

Jupyter

이번 마일스톤에서 Jupyter 확장 프로그램에 여러 개선 사항이 있었습니다.

커널 지원

커널 시작은 다음과 같은 개선이 있었습니다.

  • 더 많은 conda 환경 지원.
  • 모든 플랫폼에서 .env 파일 지원.

데이터 뷰어

이제 데이터 뷰어에서 DataFrame 및 Series에 대한 명명된 인덱스가 지원됩니다.

Named indexes support in Jupyter extension Data Viewer

새 Jupyter 노트북

새 Jupyter 노트북 생성은 이제 새 파일... 메뉴에서 통합되었습니다.

New File... drop down with option to create a new Jupyter notebook

원격 개발

컨테이너, 원격 머신 또는 Linux용 Windows 하위 시스템(WSL)을 전체 기능 개발 환경으로 사용할 수 있는 원격 개발 확장에 대한 작업이 계속 진행 중입니다.

1.66의 주요 기능은 다음과 같습니다.

  • "개발 컨테이너에서 열기" 배지 - 리포지토리 사용자를 맞춤 개발 컨테이너에서 다시 열도록 안내합니다.
  • 이제 원격 - SSH 확장 프로그램은 원격 Apple Silicon/M1/ARM64 머신에 연결할 수 있습니다.

원격 개발 릴리스 노트에서 새 확장 프로그램 기능 및 버그 수정을 확인할 수 있습니다. 원격 개발 릴리스 노트.

GitHub Pull Requests 및 Issues

GitHub Pull Requests and Issues 확장 프로그램에 대한 작업이 계속 진행 중이며, 이를 통해 풀 요청 및 이슈를 작업하고, 생성하고, 관리할 수 있습니다. 확장 프로그램의 0.40.0 릴리스에 대한 변경 로그를 확인하여 주요 내용을 살펴보세요. 0.40.0 릴리스 변경 로그.

미리 보기 기능

터미널 셸 통합

이번 릴리스에서 셸 통합은 주로 안정성 향상과 위 터미널 섹션에서 설명한 장식 개선에 중점을 두었습니다.

주요 내용은 다음과 같습니다.

  • 편집기와 유사하게 명령 장식이 이제 스크롤 막대에 표시됩니다.
  • 명령 장식은 창 다시 로드(또는 분리/연결) 시 복원되어야 합니다.
  • Windows에서 터미널 크기를 조정할 때 명령 추적 개선.
  • 터미널: 지우기 VS Code 명령 및 clear 셸 명령 처리 개선.
  • zsh 오른쪽 프롬프트 지원.
  • bash의 $PROMPT_COMMAND 변수에 대한 더 많은 형식 처리.
  • PSReadLine이 활성화되지 않은 경우 pwsh 지원.
  • 셸 초기화 스크립트는 알려진 문제가 있거나 설정이 활성화되어 있어도 특별한 처리가 필요한 경우 $VSCODE_SHELL_INTEGRATION 변수를 해제하여 셸 통합을 옵트아웃할 수 있습니다.

TypeScript 4.7 지원

이 업데이트에는 곧 출시될 TypeScript 4.7 릴리스에 대한 초기 지원이 포함되어 있습니다. TypeScript 팀이 현재 작업 중인 내용에 대한 자세한 내용은 TypeScript 4.7 반복 계획을 참조하십시오.

TypeScript 4.7 야간 빌드를 사용하려면 TypeScript Nightly 확장 프로그램을 설치하세요.

탐색기 파일 중첩

이번 반복에서는 탐색기에서 파일 중첩 지원에 대한 작업을 계속했습니다. 이 작업의 일환으로 중첩된 파일의 이동, 이름 바꾸기 및 삭제 지원을 개선했으며, 중첩 부모에 대한 편집이 자식에게도 적용될지 여부를 구성하기 위한 설정 explorer.experimental.fileNesting.operateAsGroup을 추가했습니다.

또한 파일 중첩 구성을 위한 언어를 확장하여 더 많은 확장 패턴을 포함했습니다. 이전에는 자식 패턴의 $(capture)가 부모 패턴의 *에 의해 소비된 텍스트로 확장되었습니다. 이제 $(basename), $(extname)$(dirname)에 대한 추가 지원이 패턴에 있습니다. 이를 통해 * -> $(basename).*.$(dirname)과 같은 패턴으로 "추가 세그먼트"가 있는 모든 파일을 단일 기본 파일 아래에 중첩할 수 있습니다.

확장 프로그램 작성

노트북 인식 문서 선택기

vscode.DocumentSelector 타입에 대한 추가 사항을 완료했습니다. 이 타입은 정의로 이동과 같은 언어 기능을 특정 문서에 연결할 수 있게 해주며, UI를 구동하고 해당 공급자가 결과를 요청할지 여부를 결정합니다. 이제 확장 프로그램이 노트북 유형을 구체화할 수 있는 새 속성을 추가했습니다. 예를 들어, { language: 'python', notebookType: 'jupyter-notebook'}은 Jupyter 노트북에 내장된 모든 Python 문서를 대상으로 합니다.

인라인 힌트에 편집 기능 추가

InlayHint 타입에 이제 선택적인 지연 textEdits 속성을 가질 수 있습니다. 편집이 설정된 인라인 힌트는 두 번 클릭하면 적용됩니다. textEdits는 인라인 힌트가 불필요해지도록 하는 데 필요한 편집을 적용하는 데 사용되어야 합니다. 예를 들어, 추론된 타입을 나타내는 힌트를 두 번 클릭하면 해당 타입 어노테이션이 삽입됩니다.

사용자 정의 언어 ID를 갖는 출력 채널

이번 마일스톤에서 사용자 정의 언어 ID를 가진 출력 채널을 생성하기 위한 createOutputChannel API를 완료했습니다. 이를 통해 언어 ID를 전달하여 출력 채널에 토큰 또는 구문 색상 지정 및 CodeLens 기능을 기여할 수 있습니다.

색상 테마 종류: 고대비 밝음

색상 테마는 이제 hc-light를 기본 테마(uiTheme)로 지정할 수 있습니다. 기본 테마는 색상 테마에서 정의되지 않은 모든 색상에 사용됩니다.

VS Code API에서 ColorTheme.kind는 이제 HighContrastLight 값도 가질 수 있습니다.

색상 기여를 위한 고대비 밝은 테마

색상 기여는 이제 고대비 밝은 테마(highContrastLight)도 정의할 수 있습니다. 지정되지 않은 경우 기본값으로 light 색상이 사용됩니다.

NODE_MODULE_VERSION 및 Node.js API 업데이트

네이티브 노드 모듈을 사용하는 확장 프로그램 작성자의 경우, 이번 릴리스에서 Node.js 버전이 14.16.0에서 16.13.0으로 업그레이드되었으며, 사용된 API 추상화 레이어에 따라 모듈 컴파일에 영향을 미칠 수 있습니다.

데스크톱 원격
NODE_MODULE_VERSION / process.versions.modules 101 93
Node-API / process.versions.napi 8 8

트리 드래그 앤 드롭 API

새롭게 완료된 TreeDragAndDropController API를 통해 확장 프로그램에서 기여한 트리 보기가 드래그 앤 드롭을 지원할 수 있습니다. 트리 보기 샘플에는 이 API를 사용하는 예제가 있습니다.

디버거 확장 프로그램 작성

CompletionItem.detail 지원

지난달 Debug Adapter Protocol에 CompletionItem 객체에 detail 속성이 추가되었습니다. 이 속성은 이제 VS Code에서 지원됩니다. 디버그 콘솔의 제안 위젯에서 세부 정보를 확인할 수 있습니다.

Debug Console example displaying detail field

언어 서버 프로토콜

타입 계층, 인라인 값, 인라인 힌트 지원이 3.17 릴리스 준비를 위해 제안 상태에서 해제되었습니다. 라이브러리의 새 버전이 게시되었습니다.

또한 LSP 메타 모델의 첫 버전이 해당 스키마와 함께 JSON 스키마 또는 TypeScript 타입 정의로 제공됩니다. 메타 모델에는 지정된 요청 및 알림과 해당 매개변수 유형, 반환 유형, 부분 반환 유형 및 등록 옵션에 대한 정보가 포함됩니다. 또한 정의된 모든 구조와 열거형도 포함합니다.

디버그 어댑터 프로토콜

디버그 어댑터 프로토콜(Debug Adapter Protocol)의 여러 문서 관련 문제를 해결했습니다.

  • terminatedisconnect 요청을 명확히 하기 위해 해당 문서를 개선했습니다.
  • evaluate 요청의 context 인수에 대한 variables 값이 문서화되었습니다. VS Code는 VARIABLES 보기의 컨텍스트에서 evaluate 요청이 호출될 때 이 문서화되지 않은 값을 사용했습니다. context 인수는 string 타입이고 variables 값은 문서에만 언급되므로 클라이언트와 디버그 어댑터에 대한 변경은 필요하지 않습니다.

제안된 확장 API

모든 마일스톤에는 새로운 제안 API가 제공되며 확장 저자는 이를 시험해 볼 수 있습니다. 항상 그렇듯이 피드백을 원합니다. 제안 API를 시험해 보는 단계는 다음과 같습니다.

  1. 시험하고 싶은 제안을 찾아 package.json#enabledApiProposals에 해당 이름을 추가하세요.
  2. 최신 vscode-dts를 사용하고 vscode-dts dev를 실행하세요. 그러면 해당 d.ts 파일이 작업 영역으로 다운로드됩니다.
  3. 이제 제안에 대한 프로그래밍을 할 수 있습니다.

제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경 사항이 있을 수 있으며, 기존 확장을 깨뜨리는 일은 절대 없을 것입니다.

InputBox 유효성 검사 메시지 심각도

InputBox API(window.showInputBoxwindow.createInputBox 사용)는 사용자의 입력을 유효성 검사하는 메커니즘을 제공합니다. 이번 반복에서 심각도를 표시하기 위한 제안 API를 확장했습니다.

예를 들어, 입력에 따라 사용자에게 정보 메시지를 표시하려면 유효성 검사 메시지에서 다음을 반환할 수 있습니다.

{
  content: 'this is an info message';
  severity: InputBoxValidationSeverity.Info;
}

이것은 다음과 같이 보일 것입니다.

Input box with 'this is an info message' severity message

이 제안에 대한 자세한 내용은 inputBoxSeverity에서 찾을 수 있습니다.

노트북 문서 변경 이벤트

노트북 문서 변경 이벤트에 대한 새로운 제안이 있습니다. notebookDocumentEvents에서 확인할 수 있으며 두 가지 이벤트를 포함합니다.

  • vscode.workspace.onDidSaveNotebookDocument는 노트북이 저장될 때마다 트리거됩니다.
  • vscode.workspace.onDidChangeNotebookDocument는 노트북이 변경될 때마다 트리거됩니다. 예를 들어, 셀이 추가 또는 제거되거나, 셀 자체가 변경되거나, 메타데이터가 변경될 때입니다.

탭 API 모양 최종화

다음 마일스톤에서 탭 API의 최종화가 진행될 예정이며, 현재 모양은 거의 또는 전혀 변경되지 않고 안정적인 상태입니다. 2022년 4월 반복은 이 API의 모양과 기능에 대한 피드백을 제공할 수 있는 마지막 기회가 될 것입니다. 피드백은 GitHub 이슈를 통해 제공할 수 있습니다. 탭 API는 열려 있는 탭, 해당 위치를 읽고 닫을 수 있도록 합니다.

인라인 완성

향후 몇 번의 릴리스에서 최종화를 위해 인라인 완성 작업을 계속 진행했습니다. 이제 인라인 완성은 스니펫 또는 텍스트 교체를 제안하는 데 사용할 수 있습니다 (이전에는 텍스트 삽입만 지원됨).

편집기로 드롭

제안된 텍스트 편집기 드롭 API를 사용하면 확장이 텍스트 편집기로의 드롭을 처리할 수 있습니다. 이러한 드롭 이벤트는 VS Code 내에서 (예: VS Code 탐색기에서 텍스트 편집기로 파일을 드래그하는 경우) 발생하거나 운영 체제에서 VS Code로 파일을 드롭하여 생성될 수 있습니다.

새 API를 사용하려면 "workbench.experimental.editor.dragAndDropIntoEditor.enabled": true를 설정해야 합니다. 이를 활성화한 후 Shift 키를 누른 상태로 드래그 앤 드롭하여 편집기로 드롭할 수 있습니다.

Markdown 파일로 드롭할 때 링크를 생성하는 실험적인 지원을 포함했습니다. 또한 API 사용 예제를 보려면 Markdown 확장 프로그램의 소스(Markdown 확장 프로그램 소스)를 참조할 수 있습니다.

해결됨/해결되지 않음 주석

주석 스레드에 해결됨 또는 해결되지 않음 상태를 설정하는 새로운 제안이 있습니다. 상태를 지정한 주석 스레드에는 추가적인 UX 처리가 제공됩니다.

엔지니어링

Electron 17 업데이트

이번 마일스톤에서는 Electron v17을 VS Code에 적용하게 되어 기쁩니다. 이는 이전 Electron v13 적용에서 크게 업데이트된 것이며 Electron의 프로세스 재사용 아키텍처를 활용합니다. 지난 한 해 동안 우리는 이 새로운 아키텍처를 준비하기 위해 일부 핵심 서비스의 상호 작용 및 수명 주기와 관련하여 재구현하고 점진적으로 변경 사항을 롤아웃했습니다.

이 작업에 참여한 모든 분들께 특별히 감사드리며, Insiders를 자체 호스팅하고 피드백을 제공하여 이 업데이트를 자신 있게 출시할 수 있도록 도와준 커뮤니티에도 감사드립니다.

이 변경이 VS Code 사용자에게 무엇을 의미할까요?

작업 공간 전환 및 작업 공간 다시 로드와 같은 작업이 더 빨라져야 합니다. 이번 업데이트를 통해 Chromium 버전도 98.0.4758.109로, Nodejs 버전도 16.13.0으로 올렸습니다.

다음은 무엇인가요?

새로운 릴리스 주기에 따라 Electron 버전 채택을 계속할 것입니다. 또한 워크벤치 샌드박싱을 위해 적극적으로 노력하고 있으며, 다음 단계는 Node.js 호스트 서비스와 샌드박스 워크벤치 간의 통신 채널을 개선하여 새로운 아키텍처를 더욱 단순화하는 것입니다.

RPM 패키지 요구 사항 목록 개선

이제 빌드 프로세스의 일부로 rpm 패키지에 필요한 종속성을 계산합니다. 이는 Chromium에서 수행된 작업에서 영감을 받았습니다. 이를 통해 최신 런타임 또는 네이티브 모듈을 채택할 때 최신 종속성 목록을 제공할 수 있습니다. 다음 마일스톤에는 debian 패키지에도 유사한 변경 사항을 도입할 예정입니다.

내장 확장에 대한 out-of-band 릴리스 지원

Marketplace에서 사용할 수 있는 내장 확장은 out-of-band로 릴리스될 수 있으며 VS Code는 새 버전을 감지하고 확장을 업데이트합니다. 이를 통해 이러한 확장은 사전 릴리스도 지원할 수 있습니다.

문서

VS Code의 R

VS Code에서 R 프로그래밍 언어 지원을 설명하는 새로운 Visual Studio Code의 R 토픽이 있습니다. R 확장에는 코드 완성 및 린팅과 같은 풍부한 언어 기능과 통합 R 터미널 및 전용 작업 영역, 데이터, 플롯 뷰어가 포함되어 있습니다.

R Extension for Visual Studio Code details pane

개발 컨테이너 블로그 게시물

Burke Holland의 개발 컨테이너를 사용하여 사용하기 쉬운 프로그래밍 환경을 만드는 방법에 대한 최근 블로그 게시물을 놓치셨다면 "튜토리얼의 문제"를 확인해 보세요. 이 블로그 게시물에서는 Laravel이 사전 구성된 Docker 컨테이너를 사용하여 PHP 프레임워크 튜토리얼의 런타임 및 종속성을 제공하는 방법을 설명합니다.

주요 수정 사항

  • 117674 디버그 콘솔이 내용을 래핑할 때 자동으로 스크롤이 멈추는 경우
  • 138963 디버깅이 시작될 때 디버그 콘솔이 제대로 작동하지 않음
  • 142754 VS Code 터미널에서 Emacs 사용이 중단됨
  • 143513 contributes.configuration 항목은 검색 상자가 비어 있을 때만 뷰의 "order" 속성을 존중합니다.
  • 144458 Glob 패턴 **/p*/foo/ap와 잘못 일치함
  • 144783 편집되지 않은 설정 목록 위젯 항목에 최대 너비가 없는 것으로 보입니다.
  • 145243 설정 목차를 작은 화면에서 크기 조정할 수 없음
  • 145572 설정 상자가 설정을 겹칠 수 있음

감사합니다

마지막으로, VS Code 기여자에 대한 진심 어린 감사의 말씀을 전합니다.

웹 확장

코드를 웹 확장으로 실행하는 확장을 지원하는 확장 저자 (아래 목록은 2022년 3월 1일부터 2022년 3월 27일까지입니다.)

이슈 추적

이슈 추적에 대한 기여

풀 리퀘스트

vscode 기여

vscode-css-languageservice에 대한 기여

vscode-js-debug 기여

vscode-languageserver-node에 기여

vscode-vsce 기여

debug-adapter-protocol에 기여

language-server-protocol 기여

© . This site is unofficial and not affiliated with Microsoft.