2022년 2월 (버전 1.65)
업데이트 1.65.1: 이 업데이트는 다음 보안 문제를 해결합니다.
업데이트 1.65.2: 이 업데이트는 다음 이슈를 해결합니다.
다운로드: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code의 2022년 2월 릴리스에 오신 것을 환영합니다.
- 새로운 편집기 기록 탐색 - 편집기 그룹 또는 단일 편집기로 돌아가기/앞으로 가기 기록 범위를 지정합니다.
- 밝은 고대비 테마 - VS Code 편집기 가시성을 향상시키는 밝은 테마입니다.
- 새로운 오디오 신호 - 경고, 인라인 제안 및 중단점 히트에 대한 오디오 신호입니다.
- 문제 및 검색 결과 드래그 앤 드롭 - 새 편집기 그룹 또는 기존 편집기 그룹으로 결과를 드래그합니다.
- 소스 제어 diff 편집기 관리 - Git 작업 후 diff 편집기를 자동으로 닫습니다.
- 디버거 지연 변수 평가 - JavaScript/TypeScript 속성 getter의 지연 평가입니다.
- 미리 보기: 터미널 셸 통합 - 터미널 명령 다시 실행, 명령 상태 장식입니다.
- 웹용 VS Code - 최근 로컬 파일 및 폴더 다시 열기, Git 통합 개선.
이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com의 업데이트로 이동하십시오.
워크벤치
새로운 편집기 기록 탐색
VS Code의 편집기 기록 탐색 기능은 뒤로 및 앞으로와 같은 인기 있는 명령을 구동합니다. 시간이 지남에 따라 이 기능을 개선하고 더 많은 기능을 추가하려는 수많은 기능 요청이 누적되었습니다. 이 마일스톤 편집기 기록 탐색은 이러한 요청의 대부분을 해결하기 위해 처음부터 다시 작성되었습니다.
편집기 그룹 인지 탐색
이제 편집기 그룹이 편집기 기록에서 탐색할 때 고려됩니다. 편집기 기록에서 뒤로 및 앞으로 탐색하면 이전과 같이 정확히 해당 편집기 그룹의 편집기를 활성화하고 포커스를 맞춥니다. 편집기 그룹이 제거되면 관련된 모든 기록 항목이 삭제됩니다.
아래의 짧은 비디오에서 첫 번째 뒤로는 새 편집기 그룹에 커서를 놓고 두 번째 뒤로 탐색은 원래 편집기 그룹으로 돌아갑니다.
테마: GitHub Light
편집기 그룹 또는 편집기로 탐색 범위를 지정하는 새 설정
새로운 설정 workbench.editor.navigationScope를 사용하면 편집기 기록 탐색의 범위를 활성 편집기 그룹 또는 편집기로만 지정할 수 있습니다. 지원되는 값은 다음과 같습니다.
default: 편집기 탐색은 열려 있는 모든 편집기 그룹 및 편집기에서 작동합니다.editorGroup: 편집기 탐색은 활성 편집기 그룹의 열려 있는 편집기로 제한됩니다.editor: 편집기 탐색은 활성 편집기로 제한됩니다.
범위를 editorGroup 또는 editor로 구성하면 각 편집기 그룹 또는 편집기에 개별적으로 탐색할 수 있는 자체 탐색 스택이 있습니다.
Notebook 지원
이제 모든 노트북에서 선택한 셀 간에 탐색할 수 있습니다. 텍스트 편집기에서 커서 위치 간에 탐색하는 것과 동일한 방식으로 편집기 간에 탐색이 작동합니다.
테마: GitHub Light
편집 또는 탐색 위치를 탐색하는 새 명령
기본적으로 편집기 탐색 위치는 편집기 간에 탐색할 때뿐만 아니라 편집기 내에서 탐색할 때도 추가됩니다(예: 노트북 셀 전환 또는 텍스트 편집기에서 선택 변경). 너무 많은 위치가 기록되고 있다고 생각되면 다음으로 위치를 줄이는 새 명령이 추가되었습니다.
- 탐색 위치 - 예를 들어, 정의로 이동을 사용할 때.
- 편집 위치 - 편집기가 변경될 때마다. 예를 들어 텍스트 편집기에서 입력할 때.
이러한 명령에 즐겨 사용하는 키 바인딩을 할당하여 탐색을 그에 따라 변경할 수 있습니다.
편집 위치에 대한 명령
workbench.action.navigateForwardInEditLocations- 편집 위치에서 앞으로 이동합니다.workbench.action.navigateBackInEditLocations- 편집 위치에서 뒤로 이동합니다.workbench.action.navigatePreviousInEditLocations- 편집 위치에서 이전으로 이동합니다.workbench.action.navigateToLastEditLocation- 마지막 편집 위치로 이동합니다(이 명령은 이전에 존재했습니다).
탐색 위치에 대한 명령
workbench.action.navigateForwardInNavigationLocations- 탐색 위치에서 앞으로 이동합니다.workbench.action.navigateBackInNavigationLocations- 탐색 위치에서 뒤로 이동합니다.workbench.action.navigatePreviousInNavigationLocations- 탐색 위치에서 이전으로 이동합니다.workbench.action.navigateToLastNavigationLocation'- 마지막 탐색 위치로 이동합니다.
키 바인딩을 더 강력하게 할당할 수 있도록 관련 컨텍스트 키가 추가되었습니다.
편집 위치에 대한 컨텍스트 키
canNavigateBackInEditLocations- 편집 위치에서 뒤로 이동할 수 있는지 여부입니다.canNavigateForwardInEditLocations- 편집 위치에서 앞으로 이동할 수 있는지 여부입니다.canNavigateToLastEditLocation- 마지막 편집 위치로 이동할 수 있는지 여부입니다.
탐색 위치에 대한 컨텍스트 키
canNavigateBackInNavigationLocations- 탐색 위치에서 뒤로 이동할 수 있는지 여부입니다.canNavigateForwardInNavigationLocations- 탐색 위치에서 앞으로 이동할 수 있는지 여부입니다.canNavigateToLastNavigationLocation- 마지막 탐색 위치로 이동할 수 있는지 여부입니다.
새로운 레이아웃 제어 옵션
지난 마일스톤에서 제목 표시줄에 실험적인 레이아웃 제어를 도입했습니다(workbench.experimental.layoutControl.enabled 설정을 true로 설정하여 활성화됨). 제어의 동작은 유용하지만 클릭이 너무 많이 필요하다는 피드백을 받았습니다. 이러한 이유로 workbench.experimental.layoutControl.type 설정을 사용하여 모두가 시험해 볼 수 있는 몇 가지 UI 옵션을 추가하고 있습니다. 이 설정에는 다음과 같은 옵션이 있습니다.
menu: 메뉴를 여는 단일 버튼이 있는 이전 동작(기본값).toggles: 패널, 사이드바 및 사이드 패널을 전환하는 세 개의 버튼을 표시하는 새로운 옵션입니다.both: 토글 다음에 메뉴 버튼이 표시되어 사용자 지정 레이아웃 빠른 선택에 상당히 빠르게 액세스할 수 있는 새로운 옵션입니다.
아래 이미지는 layoutControl.type을 both로 설정하여 세 개의 토글 버튼과 메뉴 드롭다운을 표시하는 것을 보여줍니다.

밝은 고대비 테마
편집기의 가독성과 판독성을 향상시키기 위해 새로운 밝은 고대비 테마가 추가되었습니다.

오디오 신호
이번 릴리스에는 경고, 인라인 제안 및 디버거 중단점 히트에 대한 오디오 신호를 포함하여 새로운 오디오 신호가 추가되었습니다. 사운드가 조정되었으며 개별 audioCues.* 설정에 대한 선호로 일반 설정 audioCues.enabled가 사용 중단되었습니다.

lineHasWarning을 제외한 모든 오디오 신호는 화면 판독기 사용자를 위해 기본적으로 활성화됩니다(설정 값 auto).
새로운 오디오 신호 명령 도움말: 오디오 신호 목록은 사용 가능한 모든 오디오 신호를 나열하고 목록을 이동하면서 각 오디오 신호를 듣고 현재 활성화된 신호를 검토할 수 있도록 합니다.

문제 및 검색 결과 드래그 앤 드롭
이제 문제, 검색 또는 참조 결과를 편집기로 드래그 앤 드롭하여 파일을 열고 결과 위치를 표시할 수 있습니다. 새 편집기 그룹을 시작하거나 기존 편집기 그룹에 결과를 드롭하려는 경우 유용할 수 있습니다.
설정 편집기 분할 보기
설정 편집기는 이제 목차와 설정 목록을 분리하기 위해 조정 가능한 분할 보기를 사용합니다.
향상된 자동 언어 감지
새로운 설정 workbench.editor.historyBasedLanguageDetection이 활성화되면 이름 없는 편집기는 편집기 기록과 현재 작업 공간의 콘텐츠를 고려하는 향상된 자동 언어 감지 알고리즘을 사용합니다. 새로운 알고리즘은 이전보다 훨씬 적은 텍스트 입력으로 감지 결과를 제공합니다.
아래는 JavaScript, TypeScript, Markdown, Python, PHP 및 C++ 전반에 걸쳐 이를 사용하는 예시입니다(더 많은 언어가 지원됨).
테마: GitHub Light + HC Customizations
향상된 언어 확장 권장 사항
언어 기능 확장 권장 사항은 이제 권장할 때 마켓플레이스의 다른 주요 언어 확장을 고려합니다. 예를 들어, VS Code는 Apache NetBeans Java 확장이 설치된 경우 Java Extension Pack을 권장하지 않습니다.
확장 트리 호버에 대한 키보드 단축키
키보드 단축키 Ctrl/Cmd+K, Ctrl/Cmd+I를 사용하여 확장에서 제공하는 사용자 지정 트리 보기에 호버를 표시하도록 트리거할 수 있습니다.
편집기
코드 조각으로 둘러싸기
현재 선택 영역을 코드 조각으로 둘러싸는 새 명령이 있습니다. 텍스트를 선택하고 명령 팔레트(⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 코드 조각으로 둘러싸기 명령을 호출하고 드롭다운에서 코드 조각을 선택합니다.
아래의 짧은 비디오에서 선택한 메서드가 try/catch 코드 조각으로 둘러싸여 있습니다.
TM_SELECTED_TEXT 또는 SELECTION 변수를 사용하는 적용 가능한 모든 코드 조각은 코드 조각으로 둘러싸기 빠른 선택 드롭다운에서 사용할 수 있습니다. 사용자 지정 사용자 또는 프로젝트 코드 조각도 포함됩니다.
액세스 가능한 인라인 힌트
인라인 힌트는 변수의 추론된 유형과 같이 추가 정보를 소스 코드 내에 표시합니다. 화면 판독기 사용자를 위해 이 기능을 돕는 새 명령이 있습니다. 명령 팔레트에서 인라인 힌트와 함께 줄 읽기를 선택하면 편집기에서 힌트와 혼합된 현재 줄을 읽습니다.
컨텍스트별 유니코드 강조 표시
거짓 양성 결과를 더 적게 보고하기 위해, 주변 문자가 비 ASCII 스크립트를 시각적으로 나타내는 경우 모호하고 보이지 않는 유니코드 문자가 더 이상 강조 표시되지 않습니다. 따라서 신뢰할 수 있는 작업 공간에서는 보이지 않거나 ASCII 문자로 혼동될 수 있는 문자만 강조 표시됩니다. 이에 대한 예외는 비 ASCII 문자의 단어에 포함된 문자이며, 적어도 하나의 문자는 ASCII 문자로 혼동될 수 없습니다.
이전에는 const 문자열에서 여러 거짓 양성 결과를 볼 수 있었습니다.

이후에는 혼동되는 문자만 강조 표시됩니다.

터미널
여러 줄 붙여넣기 경고
셸이 여러 줄을 지원하지 않을 때 터미널에 여러 줄을 붙여넣을 때 기본적으로 대화 상자가 표시됩니다. 이 경고는 대괄호 붙여넣기 모드 및 PowerShell에서 Ctrl+V를 셸에 직접 전달할 때 표시됩니다. 대화 상자에는 이 기능을 쉽게 비활성화할 수 있는 다시 묻지 않기 확인란이 있습니다.
터미널 링크 개선 사항
이번 릴리스에서는 터미널 링크 구현에 대한 대규모 리팩토링이 있었습니다. 이로 인해 기능의 유지 관리가 단순화되고 개선되었으며 다음을 가져왔습니다.
- 링크 강조 표시가 다시 작동합니다.
- 해결된 링크의 캐싱으로 특정 링크가 표시되는 대기 시간을 줄입니다.
- 작업 공간 검색 링크는 이제 검증된 링크와 동일한 코드로 처리되어 일관성을 높이고 줄/열 인식을 개선합니다.
- 몇 가지 버그 수정.
파일 링크 열기 명령 개선 사항
지난 버전에서 도입된 마지막 파일 링크 열기 및 감지된 링크 열기... 명령에서 이제 폴더가 제외되어 더 유용해졌습니다.
소스 제어
Diff 편집기 관리
이 마일스톤에서는 diff 편집기 관리에 도움이 되는 변경 사항을 적용했습니다. 명령 팔레트에 Git: 모든 diff 편집기 닫기라는 새 명령이 있어 열려 있는 모든 diff 편집기를 닫는 데 사용할 수 있습니다. 또한 git.closeDiffOnOperation이라는 새 설정이 있어 변경 사항이 스테이징, 커밋, 폐기, 스테이징 또는 언스테이징될 때 diff 편집기를 자동으로 닫습니다.
Git 명령 출력 로깅
git 명령을 실행할 때 stderr의 내용이 Git 출력 창에 로깅됩니다. stdout의 내용이 Git 출력 창에 로깅될 Git 명령 목록을 지정하는 새 설정 git.commandsToLog가 있습니다.
디버깅
지연 변수
변수 값에 액세스하면 부작용이 발생하거나 비용이 많이 들 수 있습니다. VS Code의 일반 디버거는 사용자가 요청 시 변수 값을 가져오는 버튼을 표시할 수 있습니다. 이는 새로운 "지연" 변수 기능을 지원하는 디버그 확장에서 사용할 수 있습니다. 현재 이는 내장 JavaScript 디버거에서 속성 getter에 대해서만 구현되었지만 다른 디버거 확장이 곧 따를 것으로 예상됩니다.
작업
작업에서 사용할 수 있는 플랫폼 독립적인 userHome 변수가 새로 추가되었습니다.
{
"label": "Test Home",
"type": "shell",
"command": "ls ${userHome}"
}
노트북
내장 출력 렌더러 업데이트
텍스트, 이미지, HTML 및 코드 렌더러를 VS Code 코어에서 내장 출력 렌더러 확장으로 이동했습니다. 이 변경으로 VS Code는 이제 이러한 출력 유형의 텍스트를 검색할 수 있습니다.
아래의 짧은 비디오에서는 item을 검색하면 처음에는 코드 셀에 대해 3개의 결과가 나오지만 셀 출력도 포함하도록 필터링할 수 있습니다.
고정 스크롤 노트북 셀 버튼
실행 버튼과 셀 도구 모음이 이제 코드 셀을 아래로 스크롤할 때 화면 상단에 고정됩니다. 이를 통해 긴 코드 셀에서 작업할 때 더 쉽게 액세스할 수 있습니다.
테마: Dracula
언어
TypeScript 4.6
VS Code는 이제 TypeScript 4.6을 제공합니다. 이 업데이트는 몇 가지 새로운 언어 기능과 함께 도구 개선 및 버그 수정을 제공합니다. TypeScript 블로그에서 TypeScript 4.6에 대해 자세히 읽을 수 있습니다.
JavaScript 파일의 구문 오류 보고
TypeScript 4.6 덕분에 VS Code는 이제 JavaScript 파일에서 몇 가지 일반적인 구문 오류를 보고합니다. 여기에는 파싱 오류와 블록 범위 변수의 잘못된 재선언이 포함됩니다.

이전에는 JavaScript에서 의미론적 검사를 활성화한 경우에만 이러한 오류가 보고되었습니다.
이 오류 보고는 다음을 설정하여 비활성화할 수 있습니다.
"javascript.validate.enable": false
더 많은 JS/TS 설정을 언어별로 구성할 수 있습니다.
JavaScript 및 TypeScript 설정의 더 많은 부분을 언어별 설정으로 구성할 수 있습니다. 예를 들어 javascript와 javascriptreact에 대해 다른 설정을 원하는 경우 언어별 설정이 유용합니다.
새로운 언어별 활성화된 설정에는 다음이 포함됩니다.
javascript.preferences.quoteStyle,typescript.preferences.quoteStylejavascript.preferences.importModuleSpecifier,typescript.preferences.importModuleSpecifierjavascript.preferences.importModuleSpecifierEnding,typescript.preferences.importModuleSpecifierEndingjavascript.preferences.jsxAttributeCompletionStyle,typescript.preferences.jsxAttributeCompletionStylejavascript.preferences.renameShorthandProperties,typescript.preferences.renameShorthandPropertiesjavascript.preferences.useAliasesForRenames,typescript.preferences.useAliasesForRenamesjavascript.suggest.enabled,typescript.suggest.enabledjavascript.suggest.completeJSDocs,typescript.suggest.completeJSDocsjavascript.suggest.jsdoc.generateReturns,typescript.suggest.jsdoc.generateReturnsjavascript.autoClosingTags,typescript.autoClosingTags
새로운 Lua 구문 강조 표시 문법
VS Code에는 Lua 파일의 구문 강조 표시를 위한 새롭고 더 잘 유지 관리되는 Lua 문법이 있습니다. 새 문법은 적극적으로 유지 관리되며 이전 문법의 문제를 해결하고 더 최신 Lua 토큰을 지원합니다.
웹용 VS Code
로컬 파일 및 폴더 다시 열기
최근 열린 로컬 파일 및 폴더 목록은 이제 vscode.dev 또는 insiders.vscode.dev에 웹 파일 시스템 액세스 API를 지원하는 브라우저와 함께 액세스할 때 사용할 수 있습니다. 로컬 파일을 선택하면 편집기에서 열리고 로컬 폴더를 선택하면 파일 탐색기에 해당 내용이 표시됩니다. 브라우저에서 로컬 파일 액세스를 확인하라는 메시지가 표시될 수 있습니다.
원격 저장소
GitHub 리포지토리
이 마일스톤에서는 vscode.dev 및 github.dev에서 GitHub 리포지토리를 편집할 때 병합 충돌 해결이 개선되었습니다. 이제 편집기에 현재 변경 사항 수락, 수신 변경 사항 수락 또는 두 변경 사항 모두 수락 옵션이 있는 병합 충돌 장식이 있습니다.
또한 소스 제어 보기에는 병합 충돌이 포함된 파일에 대한 변경 사항 스테이징 동작도 있습니다.
또한 vscode.dev 및 github.dev에서 GitHub 리포지토리의 특정 폴더 아래의 모든 변경 사항을 쉽게 스테이징하고 언스테이징할 수 있습니다. 그렇게 하려면 소스 제어 보기에서 마우스 오른쪽 버튼을 클릭하고 트리로 보기를 선택합니다.
테마: One Monokai
작업 공간 검색 및 모든 참조 찾기는 이제 부분 결과만 제공하는 대신 기본적으로 리포지토리의 전체 복사본을 다운로드하고 인덱싱합니다.
이 인덱싱 기능을 구성하기 위한 몇 가지 설정이 있습니다.
remoteHub.indexing.verboseDownloadNotification- 다운로드 알림이 팝업(기본값)으로 표시될지 상태 표시줄에 표시될지를 제어합니다.remoteHub.indexing.maxIndexSize- 다운로드할 인덱스의 크기 제한을 제어합니다. 이 제한을 초과하면 다운로드가 취소되고 부분 결과가 제공됩니다. 리포지토리를 다운로드하지 않고 항상 부분 결과를 사용하려면 이 설정을 비워둘 수 있습니다.
Azure Repos
이번 마일스톤에서는 특정 Azure DevOps 인증 공급자를 사용하는 Azure Repos 지원에서 일반 Microsoft 인증 공급자(설정 동기화에서 사용)를 사용하도록 전환했습니다. Azure Repo를 방문하면 다시 로그인하라는 메시지가 표시되지만 저장된 모든 변경 사항은 유지됩니다.
확장 프로그램 기여
Hex Editor 데이터 검사기 개선 사항
이전에는 Hex Editor 확장이 항상 사이드바에 데이터 검사기를 표시하고 헥스 편집기가 표시될 때마다 표시했습니다. 그러나 일부 사용자는 이것을 성가시게 생각했고 디버거를 위한 메모리 검사기와의 통합으로 인해 특히 방해가 되는 경험을 초래했습니다. 이제 데이터 검사기는 검사된 바이트의 오른쪽 측에 나타납니다. 편집기 너비가 너무 좁으면 데이터 검사기가 대신 호버 위젯 안에 표시됩니다.

테마: Codesong
이는 hexeditor.inspectorType 설정을 통해 구성할 수 있으며, 다음 세 가지 값 중 하나를 사용할 수 있습니다.
aside- 데이터 검사기를 옆에 표시합니다.hover- 편집기 너비에 관계없이 호버 시에만 데이터 검사기를 표시합니다.sidebar- 이전과 같이 사이드바에 데이터 검사기를 표시합니다.
GitHub Pull Requests 및 Issues
GitHub Pull Requests and Issues 확장에서 풀 요청 및 문제를 작업, 생성 및 관리할 수 있도록 계속 작업하고 있습니다. 확장 릴리스 0.38.0의 변경 로그를 확인하여 주요 내용을 알아보세요.
미리 보기 기능
터미널 셸 통합
터미널의 셸 통합은 이전 릴리스에 처음 도입되었으며 이번 달에 많은 개선이 이루어졌습니다. 다시 말하지만, 이 기능은 VS Code가 터미널 내에서 무슨 일이 일어나고 있는지에 대한 추가적인 통찰력을 얻을 수 있게 해주며, 이는 이전에는 거의 알려지지 않았습니다. 이 기능은 여전히 실험적인 것으로 간주되며 terminal.integrated.shellIntegration.enabled 설정을 통해 옵트인할 수 있습니다.
이번 릴리스의 가장 큰 변경 사항은 셸 통합에 의해 감지된 명령에 이제 "여백"에 장식이 있다는 것입니다. 명령 장식은 버퍼를 시각적으로 분할하고 셸 통합 기능을 사용하는 정보 및 동작에 대한 액세스를 제공합니다. 명령의 종료 코드에 따라 오류, 성공 및 기본 세 가지 유형의 명령 장식이 있습니다.

장식을 클릭하면 현재 명령 다시 실행 및 출력 복사를 포함하는 메뉴에서 해당 명령에 대한 작업이 표시됩니다.

장식에 마우스를 올리면 실행된 시간 및 관련 종료 코드와 같은 명령에 대한 정보가 표시됩니다.

장식은 terminal.integrated.shellIntegration.decorationsEnabled를 false로 설정하여 비활성화할 수 있습니다. 개별 아이콘은 terminal.integrated.shellIntegration.decorationIcon* 설정을 통해 구성할 수 있으며, 이 새로운 테마 키는 색상을 설정합니다.
terminalCommandDecoration.successBackgroundterminalCommandDecoration.errorBackgroundterminalCommandDecoration.defaultBackground
다른 주요 변경 사항은 다음과 같습니다.
- 활성화 설정의 이름이
terminal.integrated.shellIntegration.enabled로 변경되었습니다. - 모든 지원 셸에서 셸 통합을 활성화하는 메커니즘이 더 안정적이 되었습니다.
- 셸 통합은 이제 원격 연결 창(SSH, WSL, 컨테이너)을 사용할 때 작동해야 합니다.
- 줄 연속(예:
$PS2)은 이제 모든 지원 셸에서 작동해야 합니다. - "건너뛴" 명령은 이제 특별히 표시됩니다. 예를 들어
Ctrl+C를 사용하거나 빈 명령을 실행한 후입니다. - 최근 명령 실행 및 최근 디렉토리로 이동 명령은 이제 세션 간에 기록을 저장합니다. 기록 저장의 구성은
terminal.integrated.shellIntegration.history설정을 통해 구성할 수 있습니다.
ESLint
ESLint 확장은 ESLint로 검증할 수 있는 셀을 포함하는 노트북 문서에 대한 예비 지원을 제공합니다. 이 지원은 확장의 미리 보기 릴리스 버전에서만 사용할 수 있습니다.
확장 프로그램 작성
언어 상태 항목
활성 편집기에 대한 언어별 정보를 표시하는 언어 상태 항목에 대한 API를 최종 확정했습니다. 이는 프로젝트 또는 도구셋 버전에 대한 일반 정보일 수 있지만 오류 및 경고를 표시할 수도 있습니다.

API는 상태 표시줄 API와 유사하며 vscode.languages.createLanguageStatusItem(...)을 통해 액세스할 수 있습니다. 언어 상태 항목은 VS Code가 활성 편집기가 변경될 때마다 표시하고 숨길 수 있도록 문서 선택기와 함께 생성해야 합니다.
인라인 힌트
인라인 힌트 제공자 API가 이제 최종 확정되었습니다. 소스 코드에 추가 정보를 인라인으로 포함할 수 있습니다. 아래 이미지는 TypeScript가 추론된 유형에 대한 인라인 힌트를 추가하는 방법을 보여줍니다.

API는 InlayHintsProvider를 중심으로 구축됩니다. 이는 몇 가지 흥미로운 기능을 가진 InlayHint 개체를 제공합니다.
- 인라인 힌트는 툴팁 및 명령을 가질 수 있습니다.
- 힌트의 레이블은 여러 부분으로 구성될 수 있으며, 각 부분은 다시 툴팁 및 명령을 가질 수 있습니다.
- 레이블 부분에는 연결된 소스 위치가 있어 해당 부분에 대한 정의로 이동과 같은 언어 기능을 활성화할 수 있습니다.
상태 표시줄 포커스 테두리
상태 표시줄 및 상태 표시줄 항목에 포커스 테두리를 추가하여 상태 표시줄 탐색을 더 쉽고 접근 가능하게 만들었습니다.
테마 작성자는 두 가지 새로운 테마 색상을 구성하여 테두리 색상을 사용자 정의할 수 있습니다.
statusBar.focusBorder: 포커스 시 전체 상태 표시줄의 테두리 색상입니다.statusBarItem.focusBorder: 포커스 시 상태 표시줄 항목의 테두리 색상입니다.
테스트 새로 고침 작업 및 sortText
TestController 인터페이스에 표준 새로 고침 핸들러를 추가하기 위한 제안을 최종 확정했습니다. 확장이 이 속성에 메서드를 할당하면 VS Code는 테스트 탐색기 보기에서 "새로 고침" 아이콘을 표시합니다.
또한 TestItem은 이제 파일 내 특정 위치가 없는 항목의 정렬 순서를 제어하는 sortText 속성을 가질 수 있습니다.
댓글 타임스탬프
주석 API를 통해 이제 각 Comment에 timestamp를 추가할 수 있습니다. 이 타임스탬프는 주석 위젯 및 주석 보기에서 표시됩니다. 기본적으로 타임스탬프는 상대 시간(예: "2주 전")으로 표시되지만 사용자 설정 comments.useRelativeTime을 사용하여 대신 정확한 시간을 표시할 수 있습니다. 타임스탬프의 호버는 항상 정확한 시간입니다.
vscode-test 패키지가 @vscode/test-electron으로 이름 변경
vscode-test 패키지의 이름이 @vscode/test-electron으로 변경되었습니다. 확장 작성자는 해당 패키지를 포함하는 경우 확장의 package.json 파일 devDependencies의 항목을 업데이트해야 합니다. @vscode/test-electron 패키지는 VS Code 확장 통합 테스트를 실행하는 데 도움이 됩니다. 자세한 내용은 vscode-test 리포지토리에서 확인할 수 있습니다.
업데이트된 코드 아이콘
다음 새 아이콘이 codicon 라이브러리에 추가되었습니다.
arrow-circle-downarrow-circle-leftarrow-circle-rightarrow-circle-uperror-smallindentlayout-activitybar-leftlayout-activitybar-rightlayout-centeredlayout-menubarlayout-panel-centerlayout-panel-justifylayout-panel-leftlayout-panel-rightlayout-panellayout-sidebar-leftlayout-sidebar-rightlayout-statusbarlayoutnewlinerecord-smalltarget
![]()
아이콘 기여 포인트가 최종 확정되었습니다.
아이콘 기여 포인트는 확장이 ID별로 새 아이콘과 기본 아이콘을 정의할 수 있도록 합니다. 아이콘 ID는 확장(또는 종속된 다른 확장)에서 ThemeIcon을 사용할 수 있는 곳 new ThemeIcon("iconId"), 마크다운 문자열($(iconId)) 및 특정 기여 포인트의 아이콘으로 사용할 수 있습니다.
제품 아이콘 테마는 아이콘 ID를 알고 있다면 아이콘을 개별적으로 재정의할 수 있습니다.
"contributes": {
"icons": {
"distro-ubuntu": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E001"
}
},
"distro-fedora": {
"description": "Ubuntu icon",
"default": {
"fontPath": "./distroicons.woff",
"fontCharacter": "\\E002"
}
}
}
}
위의 예에서는 확장이 두 개의 새 아이콘 ID distro-ubuntu 및 distro-fedora와 기본 아이콘 정의를 정의합니다. 아이콘은 주어진 글꼴 문자에 있는 글꼴에서 정의됩니다.
파일 아이콘 테마: 파일 연결에서 폴더 이름 지원
파일 아이콘 테마에서 folderNames, folderNamesExpanded, fileNames 및 fileExtensions의 연결은 이제 폴더 이름도 포함할 수 있습니다.
"fileNames": {
"system/win.ini": "_win_ini_file"
},
system/win.ini는 연결이 system 폴더 바로 안에 있는 win.ini라는 파일을 일치시킨다는 것을 의미합니다.
"fileExtensions": {
"system/ini": "_ini_file"
},
system/ini는 연결이 system 폴더 안에 있는 *.ini라는 파일을 일치시킨다는 것을 의미합니다.
"folderNames": {
".vscode/extensions": "_vscode_folder"
},
Codespaces를 사용한 웹용 VS Code에서 원격으로 설치된 웹 확장 프로그램 실행
Codespaces를 위한 VS Code는 이제 웹 확장 호스트에서 원격으로 설치된 웹 확장을 실행하는 것을 지원합니다. 예를 들어, GitHub Codespace에 Vim 확장이 설치되어 있으면(devcontainer.json 파일의 구성을 통해) 브라우저에서 codespace를 열 때 Vim이 웹 확장 호스트에서 로드됩니다. 자세한 내용은 확장 호스트 설명서를 참조하십시오.
참고: 현재 해당 확장 프로그램에서 웹 워커를 로드하는 것과 관련된 알려진 제한 사항이 있습니다. 자세한 내용은 이슈를 참조하십시오.
디버거 확장 프로그램 작성
"중요" 출력 이벤트 지원
최근 디버그 어댑터 프로토콜은 Output 이벤트에 important 범주를 추가했습니다. 이 범주는 사용자가 놓치지 않아야 할 두드러진 이벤트를 표시합니다. VS Code는 이제 important 범주가 있는 메시지에 대한 알림 팝업을 표시합니다. 또한 디버그 콘솔에 계속 기록됩니다.
"지연" 변수 지원
일부 변수는 동적이며 값을 얻으려면 코드를 실행해야 합니다. 디버그 어댑터는 부작용이 있거나 비용이 많이 들 수 있으므로 전체 값을 자동으로 검색하고 싶지 않을 수 있습니다.
일부 디버그 어댑터는 "비싼 변수"를 사용자가 명시적으로 "확장"하여 값을 가져와야 하는 자리 표시자 개체로 표현하여 이 문제를 해결했습니다. VS Code의 내장 js-debug는 JS/TS getter에 대해 이 접근 방식을 사용합니다.
class Person {
name = 'Danny';
get email(): string {
return 'foo@example.bar';
}
get address(): Address {
return new Address();
}
}
class Address {
street = 'Main Street';
city = 'Zurich';
}
다음 스크린캐스트는 중간 개체가 효과적인 데이터 구조를 이해하기 어렵게 만드는 것을 보여줍니다.
이번 릴리스에서는 VS Code가 중간 개체를 (...) 버튼으로 압축하여 전체 값을 요청하도록 개선했습니다.
디버그 어댑터는 lazy 속성이 있는 VariablePresentationHint를 추가하여 이 새 프레젠테이션 스타일을 변수에 요청할 수 있습니다(DAP 추가 사항 보기). 클라이언트가 lazy 플래그를 지원하지 않으면 변수는 이전과 같이 표시됩니다.
언어 서버 프로토콜
언어 서버 프로토콜의 다음 버전과 해당 npm 모듈이 게시되었습니다. 새 버전에는 다음과 같은 변경 사항이 포함됩니다.
- LSP 유형을 VS Code 유형으로, 그 반대로 변환하는 것이 이제 완전히 비동기적입니다. 이 변경 사항은 확장 호스트를 차단할 수 있는 대규모 데이터 스트림의 변환을 방지합니다. 이는 라이브러리의 중단 API 변경 사항입니다(자세한 내용은 README.md 참조). 프로토콜 자체의 후방 호환성에는 영향을 미치지 않습니다.
- 노트북 문서에 대한 제안된 구현이 향상되었습니다. 이제 완전한 미들웨어 및 제공자 지원을 제공합니다.
디버그 어댑터 프로토콜
디버그 어댑터 프로토콜에 몇 가지 새 속성이 추가되었습니다.
- 새로운 부울 속성
lazy가VariablePresentationHint에 추가되었습니다. 클라이언트는 선택적 플래그를 사용하여 특정 제스처로 값을 가져오는 UI로 변수를 표시할 수 있습니다. - 새로운 선택적 문자열 속성
detail이CompletionItem에 추가되었습니다. 이 사람이 읽을 수 있는 문자열을 통해 클라이언트는 유형 또는 기호 정보와 같은 항목에 대한 추가 정보를 표시할 수 있습니다. 참고로 이 속성은 VS Code에서 아직 지원되지 않습니다.
제안된 확장 API
모든 마일스톤에는 새로운 제안 API가 제공되며 확장 저자는 이를 시험해 볼 수 있습니다. 항상 그렇듯이 피드백을 원합니다. 제안 API를 시험해 보는 단계는 다음과 같습니다.
- 시험하고 싶은 제안을 찾아
package.json#enabledApiProposals에 해당 이름을 추가하세요. - 최신 vscode-dts를 사용하고
vscode-dts dev를 실행하세요. 그러면 해당d.ts파일이 작업 영역으로 다운로드됩니다. - 이제 제안에 대한 프로그래밍을 할 수 있습니다.
제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경 사항이 있을 수 있으며, 기존 확장을 깨뜨리는 일은 절대 없을 것입니다.
타임라인 항목의 마크다운 호버
TimelineProvider에서 제공하는 항목은 이제 detail 속성에서 마크다운을 지원할 수 있으며, 이는 툴팁 콘텐츠를 제공하는 데 사용됩니다.
노트북 인지 문서 선택기
vscode.DocumentSelector 유형을 사용하면 정의로 이동과 같은 언어 기능을 특정 문서에 연결할 수 있습니다. 이는 UI를 구동하고 해당 제공자에게 결과를 요청할지 여부를 결정합니다. 이제 확장이 노트북 유형도 선택할 수 있도록 하는 새로운 API 제안이 추가되었습니다. 예를 들어, { language: 'python', notebookType: 'jupyter-notebook'}는 Jupyter 노트북에 포함된 모든 python 문서를 대상으로 합니다. 이것은 현재 제안입니다. 시도해보고 의견을 알려주세요.
사용자 지정 언어 ID가 있는 출력 채널
토큰 또는 구문 색상 및 CodeLens 기능을 출력 채널에 정의할 수 있는 확장이 있습니다. 이는 텍스트 문서(읽기 전용) 자체이기 때문입니다. 모든 출력 채널이 동일한 언어 ID를 공유하므로 이러한 사용자 지정이 다른 출력 채널에 잘못 적용될 수 있습니다. 확장 작성자가 언어별로 사용자 지정할 수 있도록 사용자 지정 언어 ID를 사용하여 출력 채널을 생성하려는 기능 요청이 있었습니다. 따라서 이 마일스톤에서는 사용자 지정 언어 ID가 있는 출력 채널을 생성하는 제안을 도입했습니다. 시도해보고 피드백을 제공해 주세요.
MarkdownString.baseUri
MarkdownString의 제안된 baseUri 속성을 사용하면 Markdown의 상대 링크 및 이미지가 상대적으로 확인되는 기본 URI를 지정할 수 있습니다. 이 속성은 HTML의 <base> 요소와 유사하게 작동합니다.
baseUri가 /로 끝나면 디렉터리로 간주되며 Markdown의 상대 경로는 해당 디렉터리를 기준으로 확인됩니다.
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/dir/');
// Here 'link' in the rendered Markdown resolves to '/path/to/dir/file.js'
baseUri가 파일인 경우 Markdown의 상대 경로는 해당 파일의 상위 디렉터리를 기준으로 확인됩니다.
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/otherFile.js');
// Here 'link' in the rendered Markdown resolves to '/path/to/file.js'
새로운 문서
Java GUI 애플리케이션
새로운 Java GUI 애플리케이션 토픽에서는 Java 확팩을 사용하여 VS Code에서 JavaFX, AWT 및 Swing 애플리케이션을 개발하는 방법을 설명합니다.
주요 수정 사항
- 107748 Voice over가 설정을 동기화하지 않는다고 읽지 않음
- 123399 Emmet가 jsx 및 html 파일에서 태그 A와 함께 클래스를 추가하지 않음.
- 141680 설정에서 @태그 검색이 느림
- 141977 설정 편집기: 폴더 액션 항목이 keyup을 올바르게 처리하지 않음
- 142040 미리보기 릴리스를 지원하는 확장을 위한 "다른 버전 설치" 액션 개선.
- 142462 쓰기 잠금이 해제되지 않으면 파일 쓰기가 중단될 수 있음
- 142641 ts-node 디버거가 v1.64에서 제대로 작동하지 않음
감사합니다
마지막으로, VS Code 기여자에 대한 진심 어린 감사의 말씀을 전합니다.
웹 확장
확장 작성자는 웹 확장으로 코드를 실행하는 확장을 활성화하기 위해 (아래 목록은 2022년 2월 1일부터 2022년 2월 28일까지입니다)
- Var Style (allen)
- helloworld-web-sample (Andrey Belym)
- asciidoctor.asciidoctor-vscode (asciidoctor)
- Gitignore Adder (beatrix)
- gkauthentication-test (BranchCreation SLU)
- Racket Helpers (Calvin-LL)
- PHP Tools (DEVSENSE)
- Naninovel (Elringus)
- Pitoco Extension (Feodrippe)
- feodrippe.feodrippe-helloworld-minimal-sample-test-web (Feodrippe)
- Simple React Snippets for Typescript (Giovanni Fu Lin)
- GitKraken Authentication (GitKraken)
- groog (groogle)
- ModalKeys (haberdashPI)
- VDM VSCode (Jonas Rask)
- cis-algorithm (kimjihu)
- Markdown (Pandoc Flavored) (Kolen Cheung)
- zyname - this is for testing and will be deleted soon (leodevbro)
- Snippet Copy (Lukas Spieß)
- PHP import checker (Marabesi)
- VSCode Language JSONata (Markus Gutbrod)
- Babel JavaScript (Michael McDermott)
- Create Project (Public Theta)
- Dynamic Theme (Rody Davis)
- Router Generator (Rody Davis)
- Chimera Theme (roydukkey)
- Qiita Markdown Preview (Ryoji Kato)
- Kestrel (SenseTime)
- Test token (sevillal)
- Sourcegraph (Sourcegraph)
- Rewrap (stkb)
- wav-preview (sukumo28)
- Pandoc (TANIGUCHI Masaya)
- Hex Viewer (Tao Cumplido)
- Time Link Bundle (Web version) (Time Link)
- DCC Websocket (virgilsisoe)
- VSC+ (Vrej)
이슈 추적
이슈 추적에 대한 기여
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
풀 리퀘스트
vscode 기여
- @aminya (Amin Yahyaabadi): fix: tasks/common에서 정규 표현식 단순화 PR #142899
- @Balastrong (Leonardo)
- 오버로드 카운터 툴팁의 불투명도 증가 PR #141828
- 프래그먼트가 디코딩 전후에 있는지 확인하여 요소 감지 수정 (필요시) PR #141848
- @BMBurstein (Baruch): 브래킷 가이드 설정 설명 수정 PR #143722
- @Bruce-Hopkins (Bruce Hopkins): 사용자 홈 변수 추가 PR #141902
- @caioagiani (Caio Agiani): 오타 수정 PR #141959
- @CGNonofr (Loïc Mangeonjean)
- 모든 언어 기능 등록 함수에서 languageId를 languageSelector로 대체 PR #143610
- getWorker 함수가 promise를 반환하도록 허용 PR #143611
- @ChaseKnowlden: Lua 문법 업데이트 PR #142107
- @divinity76: root는 --no-sandbox가 필요해 보임 PR #137125
- @efcoyote (coyote): 최신 seti-ui 버전으로 업데이트 PR #141931
- @enticies (enticies): 오류 메시지 오타 수정 PR #142054
- @g-plane (Pig Fang): 기본 파일 중첩 패턴에 "pnpm-lock.yaml" 추가 PR #142375
- @gjsjohnmurray (John Murray)
- createOutputChannel API에 선택적 languageId 추가 (#_19561) PR #140876
- testing.openTesting 설정 텍스트 수정 (#_142306) PR #142314
- @haykam821: 이미지 미리보기 투명도 배경이 스케일링에 영향을 받지 않도록 함 PR #141667
- @heartacker: 수학 스니펫 추가 PR #142697
- @icepaq (Anton): onWebviewPanel에서 자동 완성 활성화 이벤트 PR #141752
- @jeanp413 (Jean Pierre)
- WebviewElement::streamToBuffer 수정 PR #142288
- 확장 뷰에서 ID로 확장을 쿼리할 때 확장 편집기에서 항상 안정적인 버전을 렌더링하는 문제 수정 PR #143481
- @JJRcop (Jonathan Rubenstein): VS 2022를 지원되는 버전으로 추가 PR #142667
- @LuanVSO (Luan Vitor Simião Oliveira)
- psreadline이 쉘 통합과 함께 작동하지 않는 문제 수정 PR #142211
- shellintegration.ps1 수정 PR #142217
- @michaelkuhn (Michael Kuhn): 일부 Solarized 색상 수정 PR #142670
- @neeleshb (Neelesh Bodas): "이전 문제로 이동"에 대한 잘못된 레이블 수정 PR #143823
- @satokaz (Kazuyuki Sato): Markdown 경로 IntelliSense에서 헤더 제안 디코딩 PR #142392
- @SNDST00M (M.U.N.I.N): 파일 아이콘 테마에 선택적 디렉토리 구문 추가 PR #140079
- @stefanhaller (Stefan Haller): #142028 수정 PR #142930
- @surajteggi: 오타 수정 PR #142185
- @thebinarysearchtree (Andrew Jones): 들여쓰기 수정 PR #141997
- @weartist (Han): VSCode 터미널에 multiLinePasteWarning 구현, #122683 수정 PR #141822
- @y-tsutsu (y-tsutsu)
- 명령 팔레트에서 명령에 번역된 이름과 원래 이름 모두 표시. PR #142524
- 액션 카테고리 수정 PR #142911
- @Yash621 (Yash Goel): 설정 동기화에서 중복 로그인 수정 PR #142340
- @zardoy (Vitaly): tsconfig.extends에 대한 올바른 링크 경로 확인 PR #141062
vscode-css-languageservice에 대한 기여
vscode-languageserver-node에 기여
- @dsherret (David Sherret): feat: childProcess.spawn 실패 시 더 설명적인 오류 PR #888
debug-adapter-protocol에 기여
- @apupier (Aurélien Pupier): Apache Camel 디버그 어댑터 추가 PR #245
- @eshelyaron (Eshel Yaron): SWI-Prolog DAP 구현을 adapters.md에 추가 PR #248
- @hyangah (Hyang-Ah Hana Kim): sdks.md 업데이트 * go-dap 포함 PR #241
- @lukaszsamson (Łukasz Samson): Elixir DAP 구현 링크 추가 PR #243
- @Ricbet (John): OpenSumi를 구현 도구에 추가 PR #247
language-server-protocol 기여
- @zwpaper (Wei Zhang): 일관성을 위해 언어 ID 사용 PR #1409
monaco-editor 기여
- @Dan1ve (Daniel Veihelmann): Vite 샘플 코드를 Firefox와 호환되도록 함 PR #2991
- @philipturner (Philip Turner): Swift에 `@noDerivative` 수정자 추가 PR #2957