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

2022년 1월 (버전 1.64)

업데이트 1.64.1: 이 업데이트는 다음 보안 문제를 해결합니다.

업데이트 1.64.2: 이 업데이트는 다음 문제를 해결합니다.

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


Visual Studio Code의 2022년 1월 릴리스에 오신 것을 환영합니다. 이번 버전에는 많은 업데이트가 포함되어 있으며, 몇 가지 주요 하이라이트는 다음과 같습니다.

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

이번 릴리스의 새로운 기능에 대한 하이라이트를 VS Code 팀의 릴리스 파티에서 시청해 보세요. YouTube 채널에서 이벤트 녹화본을 찾을 수 있습니다.

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

워크벤치

새로운 사이드 패널

이번 마일스톤에서는 사이드 바와 반대쪽에 있는 워크벤치의 새로운 표면인 사이드 패널을 도입했습니다. 이 곳에는 사이드 바 또는 하단 패널의 보기를 보관할 수 있습니다. 하단 패널을 편집기의 왼쪽 또는 오른쪽으로 이동하는 것과 달리, 새로운 사이드 패널은 하단 패널에 추가로 작동하므로 더 많은 보기 세트를 한 번에 볼 수 있습니다.

사이드 패널을 사용하려면 일부 보기를 해당 패널로 이동해야 합니다. 가장 많은 투표를 받은 기능 요청 중 하나에 따라 개요(Outline) 보기를 사이드 바에서 사이드 패널로 이동할 수 있습니다. 보기를 사이드 패널로 드래그 앤 드롭하여 수행할 수 있습니다. 사이드 패널이 열려 있지 않으면, 하단 패널과 마찬가지로 보기를 편집기 영역 가장자리로 드래그하면 열립니다.

아래 짧은 비디오에서는 개요(Outline) 보기를 오른쪽으로 드래그하여 사이드 패널을 생성하는 과정을 보여줍니다. 사용자는 사이드 바에서 보기를 전환하면서(여기서는 전역 검색(Search) 보기를 엽니다) 개요(Outline) 보기를 계속 표시할 수 있습니다.

또는 명령 팔레트(Command Palette)의 **보기 이동**(Move View) 명령을 사용할 수 있습니다. 이 명령을 실행하면 사용 가능한 보기 드롭다운이 표시됩니다. 보기를 선택하면 새 패널/사이드 바/사이드 패널 항목을 만들거나 탐색기(Explorer) 또는 소스 제어(Source Control)와 같은 기존 위치에 보기를 배치하여 위치를 선택할 수 있습니다.

Move View command view locations dropdown

보기 아이콘을 잡아 드래그 앤 드롭하여 패널, 사이드 바, 사이드 패널 간에 보기를 이동할 수 있습니다. 보기 아이콘을 마우스 오른쪽 버튼으로 클릭하고 **위치 재설정**(Reset Location)을 선택하여 보기의 위치를 기본값으로 되돌릴 수 있습니다.

View context menu with Reset Location command

모든 보기를 기본 레이아웃으로 되돌리려면 명령 팔레트에서 **보기: 보기 위치 재설정**(Views: Reset View Locations)을 실행하면 됩니다.

패널 위치 대체

앞서 언급했듯이 새로운 사이드 패널은 패널을 왼쪽이나 오른쪽으로 이동하는 것과 유사한 기능을 제공하지만, 원래 패널의 전체 내용을 이동하지 않는다는 점에서 개선되었습니다. 패널 간 보기 드래그 앤 드롭과 함께, 새로운 사이드 패널은 하단 패널을 이동하는 옵션을 대체합니다.

이에 따라 workbench.panel.defaultLocation 설정과 **패널 이동**(Move Panel) 명령은 유사한 명령으로 대체되어 사용 중단되었습니다.

  • 패널의 보기를 사이드 패널로 이동 (workbench.action.movePanelToSidePanel)
  • 사이드 패널의 보기를 패널로 이동 (workbench.action.moveSidePanelToPanel)

이전 **패널 이동**(Move Panel) 명령은 유사한 동작을 제공하는 새 명령으로 매핑되었습니다. 이 매핑에도 불구하고 키 바인딩을 새 명령으로 업데이트하는 것이 좋습니다.

아래에서는 전체 하단 패널을 사이드 패널로 이동한 다음 원래 패널 위치로 다시 이동하는 과정을 보여줍니다.

패널 정렬

또 다른 인기 있는 기능 요청에 따라, 패널 정렬이라는 새로운 레이아웃 옵션을 추가했습니다. 이 옵션을 사용하면 하단 패널이 창을 얼마나 가로질러 확장되는지 구성할 수 있습니다. 네 가지 옵션이 있습니다.

  • 가운데 - 이것이 클래식 동작입니다. 패널은 편집기 영역의 너비만 차지합니다.
  • 왼쪽 - 패널은 창의 왼쪽 가장자리에서 편집기 영역의 오른쪽 가장자리까지 확장됩니다.
  • 오른쪽 - 패널은 창의 오른쪽 가장자리에서 편집기 영역의 왼쪽 가장자리까지 확장됩니다.
  • 양쪽 정렬 - 패널은 창의 전체 너비를 차지합니다.

모든 옵션에서 활동 표시줄(Activity Bar)은 창의 가장자리로 간주된다는 점에 유의하십시오.

이 옵션들은 **보기** > **모양** > **패널 정렬**(View > Appearance > Align Panel) 메뉴 또는 새로운 **패널 정렬 설정...**(Set Panel Alignment to...) 명령을 사용하여 구성할 수 있습니다.

레이아웃 제어 사용자 지정

이러한 모든 새로운 레이아웃 옵션과 함께, 발견 용이성과 사용 편의성을 위해 레이아웃 구성을 더 잘 노출할 수 있는 방법을 탐색해 왔습니다. 그래서 제목 표시줄에 새로운 실험적인 **레이아웃 구성**(Configure Layout) 버튼이 보일 수 있습니다. 이 버튼은 window.titleBarStyle 설정이 custom(Windows 및 macOS에서 기본값)이고 workbench.experimental.layoutControl.enabledtrue로 설정된 경우에만 나타납니다. 버튼 가시성은 실험 기능으로 제어되지만, 수동으로 활성화하려면 설정 편집기에서 다음 설정 값을 적용하여 수행할 수 있습니다 (⌘, (Windows, Linux Ctrl+,)).

Configure Layout button on the title bar

메뉴의 내용은 아직 작업 중이지만, 현재 사이드 바, 패널 및 사이드 패널을 전환하는 기능을 볼 수 있습니다. 또한 새로운 명령 **레이아웃 사용자 지정**(Customize Layout) 항목이 표시됩니다. 이 새로운 명령은 하나의 장소에서 모든 레이아웃 구성 측면을 제어할 수 있는 새로운 대화형 빠른 선택(Quick Pick) 경험을 트리거합니다.

이 기능을 사용해 보시고, 이슈 #137633에서 피드백을 알려주시기 바랍니다.

설정 편집기

설정 편집기 검색은 이제 검색 시 문자열 및 열거형 설정에서 문자열 값 일치 항목을 찾습니다.

Settings editor pulling up results where the enum value matches the query

새로운 검색 알고리즘은 전체 단어 일치 항목을 우선적으로 처리합니다. 즉, Java 및 JavaScript 확장 프로그램이 모두 설치되어 있는 경우 "java"를 검색할 때 Java 설정이 먼저 표시됩니다.

Settings editor search showing Java results before JavaScript ones when searching "java"

마지막으로, 설정 편집기의 드롭다운(예: files.autoSave) 및 목록 위젯(예: files.associations)은 이제 터치스크린 장치와 작동합니다.

설정 동기화

설정 동기화가 사용자 작업(User Tasks) 동기화를 지원합니다.

Settings Sync User Tasks

웹용 VS Code에서 기본 설정 동기화 컴퓨터 이름에 이제 브라우저 및 제품 이름이 포함됩니다.

Settings Sync default machine name including browser and product names

탐색기: 실행 취소 확인 및 비활성화

파일 탐색기는 파일 및 폴더 편집(이름 변경, 잘라내기/복사/붙여넣기, 이동, 가져오기 등)을 되돌리는 실행 취소 스택을 오랫동안 지원해 왔습니다. 일부 사용자는 이 기능을 예상치 못한 것으로 여기므로, 탐색기에서 실행 취소를 비활성화하는 설정(explorer.enableUndo)이 새로 생겼습니다.

또한, 실행 취소를 수행할 때 탐색기가 확인 메시지를 얼마나 자주 표시할지 구성하기 위해 새 설정(explorer.confirmUndo)이 추가되었습니다. 기본적으로 탐색기는 의도치 않은 파괴적인 실행 취소가 발생하지 않도록 이전보다 더 자주 확인 메시지를 표시하지만, "light" 값으로 이전 동작으로 변경하거나 모든 실행 취소 작업 전에 확인 메시지를 표시하도록 "verbose"로 설정할 수 있습니다.

편집기

오디오 큐

오디오 큐는 현재 줄에 오류, 중단점 또는 접힌 텍스트 영역과 같은 특정 표시기가 있는지 여부를 나타냅니다.

기본 커서가 줄을 변경하거나 첫 번째 표시기가 현재 줄에 추가될 때 재생됩니다. 오디오 큐는 화면 읽기 프로그램이 연결되어 있을 때 자동으로 활성화되지만, audioCues.enabledon으로 설정하여 수동으로 켤 수도 있습니다.

더 많은 오디오 큐가 추가될 예정이며, 사운드 디자인을 개선해 나갈 것입니다.

유니코드 강조 표시 개선

11월 릴리스에 도입된 유니코드 강조 표시 기능을 개선하기 위해 잘못된 긍정(false positive)을 더 잘 처리할 수 있는 새로운 설정이 추가되었습니다.

새로운 설정 editor.unicodeHighlight.allowedLocales는 하나 이상의 구성된 로케일에서 일반적인 문자를 허용하는 데 사용될 수 있습니다. 기본적으로 여기에는 현재 VS Code 표시 언어와 현재 OS 언어가 포함됩니다. 현재는 vscode-loc 언어 팩에 번역된 로케일만 지원됩니다.

editor.unicodeHighlight.includeStrings 설정은 문자열의 문자가 강조 표시되어야 하는지 여부를 제어합니다. 기본값은 true이지만 false로 설정하여 문자열을 무시할 수 있습니다.

편집기 접기 제한

새로운 설정 editor.foldingMaximumRegions을 통해 사용자는 편집기에 표시되는 접기 범위의 최대 수를 변경할 수 있습니다. 기본적으로 한도는 5000입니다. 더 큰 숫자는 성능 저하를 초래할 수 있다는 점에 유의하십시오.

편집기, 언어 기능 타이밍에 적응

확장 프로그램은 접기 영역, CodeLens, 인라인 힌트, 의미론적 토큰과 같은 내장 기능과 거의 모든 언어 기능을 지원합니다. 이러한 기능은 사용자 제스처가 아닌 타이핑에 의해 트리거되며, 일반적으로 시간 초과 후에 발생합니다. 예를 들어, CodeLens는 타이핑함에 따라 업데이트되며 의미론적 토큰도 마찬가지입니다. 선택된 시간 초과 값은 고정되어 있고 어느 정도 임의적이었습니다. 이번 릴리스에서는 편집기가 관찰된 타이밍에 적응하여 느린 기기나 네트워크 연결이 요청으로 과부하되지 않고 빠른 기기가 더 잘 활용되도록 합니다.

터미널

자동 응답

터미널에는 특정 문자 시퀀스를 수신할 때 자동으로 응답하는 옵션 기능이 새로 추가되었습니다. 이 기능이 유용한 예는 배치 스크립트를 실행할 때 Ctrl+C를 눌렀을 때 나타나는 Windows 배치 스크립트 메시지 배치 작업을 종료하시겠습니까(Y/N)?입니다. Windows에서 Ctrl+C 시 터미널이 자동으로 Y와 Enter(\r)로 응답하도록 하려면 다음 설정을 추가하십시오.

"terminal.integrated.autoReplies": {
  "Terminate batch job (Y/N)?": "Y\r"
}

테마: Sapphire

다른 항목에 대한 사용자 지정 응답을 설정할 수 있지만, 텍스트를 자동으로 프로세스에 보내므로 주의해야 합니다. 예를 들어, 프롬프트가 나타날 때 Oh My Zsh를 자동으로 업데이트하는 데 사용할 수 있습니다.

"terminal.integrated.autoReplies": {
  "[Oh My Zsh] Would you like to check for updates? [Y/n]": "Y\r"
}

Clink를 사용하고 이와 유사한 기능을 활성화하는 경우, 두 기능이 서로 충돌하는 것을 방지하기 위해 Clink 또는 VS Code에서 응답을 null로 설정하여 비활성화할 수 있습니다.

"terminal.integrated.autoReplies": {
  "Terminate batch job (Y/N)": null
}

향상된 VT 지원

운영 체제 명령(OSC) 4/10/11/12 이스케이프 시퀀스에 대한 지원이 추가되어 애플리케이션이 터미널의 테마 색상을 제어할 수 있습니다.

이전에는 터미널에서 링크를 탐색하려면 마우스가 필요했습니다. 이제 다음 명령을 사용하여 키보드만으로 링크를 열 수 있습니다.

  • 터미널: 마지막 웹 링크 열기...(예: https://github.com/microsoft/vscode)
  • 터미널: 마지막 파일 링크 열기...(예: /Users/user/repo/file.txt)
  • 터미널: 감지된 링크 열기...(모든 링크(웹, 파일, 단어) 보기)

A Quick Pick is displayed with link results of type web, word, and file.

소스 제어

리포지토리 검색에 대한 더 많은 제어

커뮤니티 피드백을 바탕으로 Git 리포지토리 검색 프로세스를 더 잘 제어하고 더 다양한 폴더 구조를 지원하기 위해 두 가지 새로운 설정이 추가되었습니다.

  • git.repositoryScanMaxDepth - 검색 시 사용되는 깊이를 제어합니다.
  • git.repositoryScanIgnoredFolders - 검색 중에 무시해야 하는 폴더 목록을 제어합니다.

변경 목록 정렬 개선

새로운 설정(scm.defaultViewSortKey)은 소스 제어 보기의 변경 목록에 사용되는 기본 정렬 키를 제어합니다. 정렬 키에 대한 선택은 각 폴더/작업 영역에 대해 기억됩니다.

옵션은 다음과 같습니다.

  • name - 파일 이름별로 변경 사항을 정렬합니다.
  • path - 파일 경로별로 변경 사항을 정렬합니다 (기본값).
  • status - 소스 제어 상태별로 변경 사항을 정렬합니다.

설정 변경 사항을 적용하려면 VS Code 창을 다시 로드해야 합니다.

새로운 Git stash 명령

명령 팔레트에 **Git: 모든 Stash 삭제...**(Git: Drop All Stashes...)라는 새 명령이 추가되어 사용자가 모든 stash 항목을 지울 수 있습니다. 영구적인 결과를 초래하는 모든 Git 작업과 마찬가지로 이 명령은 주의해서 사용하십시오.

Git 출력 - git 명령 실행 시간 및 기간

성능 문제를 추적하는 데 도움이 되도록 Git 출력 채널에 git 명령이 실행된 시간과 명령의 기간(자식 프로세스를 스폰하는 데 걸린 시간을 제외)이 표시됩니다.

노트북

렌더링된 Markdown 및 코드 셀 출력에서 텍스트 찾기

VS Code는 이제 Markdown 셀의 렌더링된 보기와 코드 셀의 출력에서 텍스트를 찾습니다. 이 기능은 기본적으로 비활성화되어 있습니다. 모든 Markdown 셀과 출력을 렌더링해야 하기 때문이며, 이는 노트북을 열 때 비용이 많이 들 수 있습니다. 찾기 컨트롤 입력 상자의 필터 드롭다운에서 옵션(**Markdown 미리 보기**, **코드 셀 출력**)을 선택하여 이 기능을 활성화할 수 있습니다.

현재 출력에서 텍스트를 검색하는 데 몇 가지 제한 사항이 있습니다. 예를 들어 VS Code 자체에서 렌더링하는 스트리밍/텍스트 출력은 검색할 수 없습니다. 다음 반복에서 이를 개선할 예정입니다.

셀 접기 UI

노트북 셀에는 초점이 맞춰진 셀을 나타내는 왼쪽에 파란색 막대가 있습니다. 이 막대는 이제 상호 작용 가능합니다. 윗부분을 클릭하면 셀 입력이 접히고, 아랫부분을 클릭하면 출력이 접힙니다.

Markdown 셀 접기 힌트

Markdown 셀 영역이 접혀 있으면, 일부 셀이 숨겨져 있음을 더 명확하게 하기 위해 접힌 셀 수를 나타내는 메시지가 나타납니다.

Folded Markdown cell hint

셀 실행 힌트

셀이 실행 중인지, 어떤 셀이 실행 중인지 더 명확하게 하기 위해 몇 가지 변경 사항을 적용했습니다.

첫째, 셀이 실행 중이지만 화면에 보이지 않는 경우 편집기 창 상단에 진행률 표시줄이 표시됩니다.

둘째, 셀이 실행 중일 때 노트북 도구 모음에 **실행 중인 셀로 이동**(Go To Running Cell)이라는 새 버튼이 추가됩니다.

셋째, notebook.outline.showCodeCellsnotebook.breadcrumbs.showCodeCells 설정을 통해 코드 셀이 개요 또는 탐색기에서 보이는 경우, 실행 중일 때 애니메이션 실행 아이콘이 표시됩니다.

디버깅

이진 데이터 보기 및 편집

VS Code의 일반 디버거는 이제 이진 데이터(일명 "메모리")를 보고 편집하는 것을 지원합니다. 메모리 보기 및 편집이 가능한 변수는 **변수**(Variables) 보기에서 인라인 이진 아이콘을 표시하며, 이를 선택하면 Hex Editor가 열립니다.

Binary data shown for a variable during a debug session

테마: Codesong

메모리 보기 및 편집은 디버그 어댑터 프로토콜의 메모리 관련 기능에 의존하며, 디버그 확장은 VS Code에서 해당 UI를 활성화하기 위해 이러한 기능을 구현해야 합니다. 자세한 내용은 아래 디버거 확장 작성 섹션을 참조하십시오. 이번 릴리스에서는 내장 JavaScript 디버거만 이진 데이터를 보거나 편집할 수 있지만, 다른 디버그 확장 프로그램도 곧 지원할 것으로 예상됩니다.

JavaScript 디버깅

중단점에서 일시 중지할 호출자 제외

때로는 중단점을 설정하거나 디버거 문을 추가했지만 특정 코드 경로에서 호출될 때만 일시 중지하고 싶을 수 있습니다. mousemove와 같은 DOM 이벤트 핸들이 좋은 예입니다. 이번 릴리스에서는 JavaScript 디버거에 중단점이나 디버거 문에서 "호출자 제외" 기능이 추가되었습니다.

위치에서 일시 중지될 때, **호출 스택**(CALL STACK) 보기에서 프레임을 마우스 오른쪽 버튼으로 클릭하고 **호출자 제외**(Exclude Caller) 명령을 선택할 수 있습니다. 새 **제외된 호출자**(EXCLUDED CALLERS) 보기가 표시되어 제외된 호출자를 보거나 관리할 수 있으며, 그 후 프로그램은 제외된 호출자가 호출 스택에서 어디에 나타나든 중단점 위치에서 일시 중지되지 않습니다.

Linux에서의 Edge 지원

Microsoft Edge 디버깅이 이제 Linux에서도 edge 디버그 유형을 통해 가능합니다.

언어

Markdown 경로 IntelliSense

내장 Markdown 확장 프로그램에 이제 링크 및 이미지에 대한 경로 IntelliSense가 포함되었습니다.

Path suggestions in a Markdown link

경로 제안은 CSS 및 HTML 파일의 경로 IntelliSense와 유사하게 작동합니다. /로 시작하는 경로는 현재 작업 영역에 상대적으로 확인되며, ./로 시작하거나 접두사가 없는 경로는 현재 파일에 상대적으로 확인됩니다. 경로 제안은 /를 입력하면 자동으로 표시되거나 ⌃Space (Windows, Linux Ctrl+Space)를 사용하여 수동으로 호출할 수 있습니다.

경로 IntelliSense는 현재 파일 또는 다른 Markdown 파일 내의 헤더에 연결하는 데에도 도움이 됩니다. 경로를 #으로 시작하면 해당 파일의 모든 헤더에 대한 제안을 볼 수 있습니다(설정에 따라 이러한 제안을 보려면 ⌃Space (Windows, Linux Ctrl+Space)를 사용해야 할 수 있습니다).

Header section suggestions in a Markdown link

"markdown.suggest.paths.enabled": false로 경로 IntelliSense를 비활성화할 수 있습니다.

Markdown 취소선 지원

VS Code는 이제 Markdown 편집기와 내장 Markdown 미리 보기 모두에서 ~~취소선~~ 텍스트를 렌더링하는 것을 지원합니다.

Strikethrough rendering the Markdown editor and preview

취소선은 텍스트를 두 개의 물결표(tilde)로 감싸서 작성됩니다.

VS Code의 모든 내장 테마는 취소선을 지원하지만, 마켓플레이스의 일부 테마는 편집기에서 취소선 텍스트를 올바르게 렌더링하기 위해 업데이트가 필요할 수 있습니다.

TS 4.5.5

VS Code는 이제 TypeScript 4.5.5를 번들로 제공합니다.

이 마이너 업데이트는 몇 가지 중요한 충돌 및 도구 버그를 수정합니다.

JS/TS용 스니펫으로 감싸기

JavaScript 및 TypeScript 스니펫의 상당수가 선택한 텍스트를 감싸는 기능을 지원하도록 업데이트되었습니다.

스니펫으로 감싸기를 사용하려면 먼저 텍스트를 선택한 다음 **스니펫 삽입**(Insert Snippet)을 실행합니다. 선택한 텍스트를 대체하는 대신, if 또는 forof와 같은 스니펫은 이제 선택한 텍스트를 새 문장의 본문으로 사용합니다.

HTML 등호 뒤 자동 따옴표 삽입

HTML에서 속성 뒤에 =를 입력하면 언어 서비스가 이제 자동으로 따옴표를 삽입하고 커서를 따옴표 사이에 배치합니다. html.completion.attributeDefaultValue 설정을 사용하여 따옴표(작은따옴표 또는 큰따옴표) 유형을 지정할 수 있으며, 기본적으로 큰따옴표를 사용합니다.

"html.autoCreateQuotes": false로 설정을 변경하여 이 기능을 비활성화할 수 있습니다.

JSON 스키마 캐시 지우기 명령

새로운 **스키마 캐시 지우기**(Clear schema cache) 명령은 이전에 다운로드한 스키마의 캐시를 지웁니다.

LaTeX 지원

LaTeX 기본 언어 지원이 추가되었습니다. 여기에는 구문 강조 표시 및 자동 닫힘 쌍이 포함됩니다.

LaTeX snippet

웹용 VS Code

원격 저장소

GitHub 리포지토리

웹용 VS Code에서 생성된 커밋은 이제 GitHub UI에서 서명되고 **확인됨**(Verified)으로 표시됩니다. 또한, 유지보수자는 웹용 VS Code를 사용할 때 포크에서 제출된 끌어오기 요청(pull request)에 커밋할 수 있습니다. 이는 새로운 GitHub GraphQL createCommitOnBranch API 덕분입니다.

또한, 소스 제어 보기에서 이제 다중 선택을 지원합니다.

테마: One Monokai

이전에는 빈 커밋 생성이 GitHub 리포지토리를 로컬 또는 원격 컴퓨터로 복제한 후에만 지원되었습니다. 이제 웹용 VS Code에서도 **GitHub 리포지토리: 빈 커밋**(GitHub Repositories: Commit Empty) 명령을 사용하여 빈 커밋을 생성할 수 있습니다.

또한, 전체 리포지토리 텍스트 검색 및 **참조로 이동**(Go to Reference)과 같은 고급 기능을 사용하도록 하기 위해 주어진 크기 이하의 리포지토리 전체 내용을 자동으로 다운로드하는 것을 활성화하는 새로운 구성이 추가되었습니다. remoteHub.experimental.fs.maxAutoDownloadSize 설정은 전체 내용을 다운로드하려고 할 때 프롬프트가 표시되기 전의 리포지토리 크기 제한을 제어합니다. 기본적으로 maxAutoDownloadSize는 설정되지 않아 프롬프트 없이 다운로드하는 경우가 없습니다.

Azure Repos

Azure Repos 지원은 GitHub Repositories 확장 프로그램에서 별도의 전용 확장 프로그램으로 이동되었으며, 이 확장 프로그램은 데스크톱에서도 설치할 수 있습니다.

사전 릴리스 확장 프로그램 채택

웹용 VS Code는 이제 GitHub Pull Requests and IssuesGitHub Repositories 확장 프로그램 모두의 사전 릴리스 버전을 번들로 제공합니다.

PWA 및 오프라인 지원

웹용 VS Code는 PWA 모델을 채택했으며 이제 호스트 OS에 PWA로 설치할 수 있습니다. 이 채택 덕분에 일부 오프라인 기능도 활성화할 수 있습니다. vscode.dev 또는 insiders.vscode.dev를 방문한 후에는 오프라인 상태에서도 로컬 파일을 편집하는 데 사용할 수 있습니다.

Install VS Code PWA prompt

확장 프로그램 기여

Python

인터프리터 빠른 선택 개선

원하는 인터프리터를 더 쉽게 선택할 수 있도록 Python 확장 프로그램은 이제 **인터프리터 선택**(Select Interpreter) 빠른 선택에서 인터프리터를 유형별로 그룹화합니다.

Interpreters grouped in interpreter picker

또한, 상태 표시줄의 활성/선택된 인터프리터를 오른쪽으로, 가능하면 언어 상태 안에 이동시키는 실험을 하고 있으니, 보이지 않으면 오른쪽 측면의 **Python** 상태를 확인해 보세요.

'conda run' 지원 추가

Anaconda 사용자 지원을 개선하기 위해 conda run에 대한 지원을 구현했습니다. 이때 --no-capture-output 매개변수를 사용하여 과거에 오류를 일으켰던 출력을 캡처하지 않습니다. 이 기능은 린터, 테스트 및 포매팅 함수를 실행하기 위해 구현되었습니다.

Windows에서 특수 문자가 포함된 매개변수로 린팅 및 테스트를 실행할 때 오류가 발생하는 알려진 버그 이슈 #10972가 있습니다. 이는 conda run이 특수 문자가 포함된 매개변수를 읽는 방식 때문이며, settings.json에 지정한 모든 명령줄 인수에 영향을 줄 수 있습니다.

Anaconda 팀은 이 문제를 해결 중이며 곧 수정 버전을 출시할 예정입니다. 새 버전이 출시되면 Conda 웹사이트에서 Anaconda 버전을 업데이트할 수 있습니다.

스마트 선택 및 더 나은 접기 지원

Python 코드 선택 및 접기 기능도 Pylance 언어 서버를 통해 개선되었습니다.

키보드를 사용하여 Python 코드를 선택할 때, 선택 범위가 정의될 때 코드의 의미론적 정보가 고려되므로 더 적은 키 입력이 필요합니다.

테마: Horizon Extended

접기의 경우, 이전에는 들여쓰기만으로 영역이 정의되었으므로 여러 줄 문자열과 같은 일부 경우에 이상적이지 않았습니다. 이제 접기 영역은 의미론적 정보를 적절하게 고려하고 #region 주석도 지원합니다.

Jupyter

원격 Jupyter 서버

Jupyter 확장 프로그램은 이제 로컬 및 원격 Jupyter 서버 간에 전환할 때 VS Code를 다시 로드할 필요가 없습니다. 또한, 확장 프로그램은 이제 커널 선택기에서 로컬 및 원격 커널을 함께 표시합니다.

Hex 편집기

Hex Editor는 상당한 아키텍처 리팩토링을 거쳤습니다. 특히, 대부분의 경우 성능 문제 없이 모든 크기의 파일을 열 수 있습니다. 또한 레이아웃 너비를 구성할 수 있으며, 더 강력한 찾기/바꾸기 구현을 갖추고 있습니다. 향후 반복에서 지속적인 개선이 이루어질 것입니다.

원격 개발

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

원격 개발 릴리스 노트에서 새 확장 기능 및 버그 수정에 대해 알아볼 수 있습니다.

GitHub Pull Requests 및 Issues

GitHub Pull Requests and Issues 확장 프로그램 작업은 계속 진행 중이며, 이를 통해 끌어오기 요청 및 문제를 작업하고, 생성하고, 관리할 수 있습니다. 확장 프로그램 0.36.0 릴리스의 변경 로그에서 주요 내용을 확인하십시오.

미리 보기 기능

터미널 셸 통합

터미널은 이제 실험적인 쉘 통합 기능을 제공하여 VS Code가 이전에 알 수 없었던 터미널 내에서 무슨 일이 일어나고 있는지 파악할 수 있도록 합니다. "terminal.integrated.enableShellIntegration": true 설정을 사용하여 활성화하면, 가능한 경우 쉘 통합 스크립트를 실행하는 인수가 터미널 프로필에 삽입됩니다. 스크립트 자체는 주로 프롬프트, 명령 및 명령 출력의 위치, 각 명령의 현재 작업 디렉토리(cwd), 각 명령의 종료 코드와 같은 정보를 VS Code에 제공하는 보이지 않는 시퀀스를 프롬프트에 삽입합니다.

이 정보를 사용하여 기존 기능을 다양한 방식으로 향상시킬 수 있습니다.

  • cwd 신속 감지 - 이전에는 macOS 및 Linux에서만 가능했으며 프로세스를 실행하거나 파일 시스템을 쿼리하여 정보를 얻었습니다. 이제 Windows에서도 작동합니다. cwd는 링크 감지 및 터미널 분할 시 cwd 상속과 같은 기능에 사용됩니다.
  • 명령 추적 기능 개선 - 이 기능은 이전에 존재했지만 macOS(Cmd+Up/Down)에만 기본 키 바인딩이 있었고 Enter가 눌린 시간을 기준으로 줄 위치를 추측하는 단순한 접근 방식을 사용했습니다.

쉘 통합을 통해 다음과 같은 새로운 기능을 사용할 수 있습니다.

  • 최근 명령 실행 - 실행된 명령을 알 수 있으므로 빠른 선택에서 이를 보고 다시 실행할 수 있는 명령을 제공합니다. 최근 명령은 현재 작업 디렉토리 및 실행된 시간 정보와 함께 빠른 선택에 표시됩니다.
  • 최근 디렉토리로 이동 - 위와 마찬가지로 과거 디렉토리로 이동하는 것도 허용합니다. 최근 디렉토리는 빠른 선택에 표시되며 빈도순(내림차순)으로 정렬됩니다.
  • cwd에 상대적인 링크 지원 - 이제 터미널 버퍼의 각 줄에 대한 cwd를 알고 있으므로, 활성화된 위치의 cwd에 상대적으로 터미널의 링크를 지원할 수 있습니다. 이전에는 링크를 클릭하면 일치하는 이름이 포함된 모든 폴더에서 결과를 가져온 빠른 선택이 열렸습니다. 이제 정확한 파일 일치가 열립니다. cwd가 vscode인 터미널에서 package.json이 에코됩니다. 파일 이름을 클릭하면 vscode/package.json이 열립니다. 디렉토리가 template-string-converter로 변경된 다음 package.json이 에코됩니다. 파일 이름을 클릭하면 template-string-converter/package.json이 열립니다.

목표는 기능의 안정성이 충분히 좋아지면 쉘 통합을 기본적으로 활성화하는 것입니다. 인자 주입에 대한 접근 방식은 가능한 한 방해가 되지 않도록 하는 것입니다. 예를 들어, 일부 터미널과 달리 쉘 초기화 스크립트를 자동으로 수정하는 것이 아니라 프로세스 생성을 가로채고, 인자를 검사하고, 터미널이 해당 인자로 실행될 수 있다고 확신하는 경우 쉘 통합 인자를 주입합니다. 사용자가 별도의 설정 없이 잘 작동하고 기존 쉘 설정을 방해하지 않도록 하는 것이 목표입니다.

현재 지원되는 쉘은 Windows의 pwsh 및 Linux 및 macOS의 pwsh, bash, zsh입니다.

앞서 언급했듯이, 이것은 아직 다듬어야 할 부분이 있는 실험적인 기능이며 몇 가지 알려진 문제가 있습니다.

  • $PS2 줄 연속은 아직 지원되지 않습니다. 그러나 pwsh의 줄 연속은 작동합니다.
  • 오른쪽 프롬프트는 아직 지원되지 않습니다.
  • zsh 스크립트는 때때로 활성화되지 않는 것으로 알려져 있습니다.
  • 원격 VS Code 창 지원은 제한적입니다.

탐색기 파일 중첩

탐색기는 이제 동일한 디렉토리에 있는 파일을 논리적으로 중첩된 레이아웃으로 표시하는 실험적인 지원을 제공합니다. 이는 관련 파일을 시각적으로 그룹화하고 파일을 "루트" 파일로 접어 혼란을 줄이는 데 도움이 될 수 있습니다. 이 동작을 제어하기 위해 몇 가지 새로운 설정이 추가되었습니다.

  • explorer.experimental.fileNesting.enabled: 파일 중첩 활성화 여부를 제어합니다.
  • explorer.experimental.fileNesting.expand: 파일 중첩이 기본적으로 확장으로 표시될지 여부를 제어합니다.
  • explorer.experimental.fileNesting.patterns: 파일이 중첩되는 방식을 제어합니다.

예를 들어, 많은 리포지토리에서 .ts 파일은 파생된 .js, .d.ts 및/또는 .js.map 파일과 함께 나란히 있습니다. files.exclude를 통해 파생된 파일을 완전히 숨기는 것이 오랫동안 가능했지만, 이제 중첩을 통해 파생된 파일에 빠르게 액세스할 수 있는 방법이 생겨 좋습니다.

아래에서는 탐색기가 기본 explorer.experimental.fileNesting.patterns 구성을 사용하여 .js.js.map 파일을 중첩하는 것을 보여줍니다. 이 파일들은 해당 .ts 파일이 확장될 때 표시됩니다.

Explorer with some collapsed and expanded nests

테마: GitHub Light

확장 프로그램 작성

언어 기본 아이콘

언어 기여자는 언어에 대한 아이콘을 정의할 수 있습니다.

{
  "contributes": {
    "languages": [
      {
        "id": "latex",
        // ...
        "icon": {
          "light": "./icons/latex-light.png",
          "dark": "./icons/latex-dark.png"
        }
      }
  ]

이 아이콘은 현재 파일 아이콘 테마에 해당 언어에 대한 일반 파일 아이콘만 포함된 경우 표시됩니다.

또한 Minimal 또는 None과 같이 파일 아이콘을 표시하지 않는 파일 아이콘 테마는 언어 아이콘을 사용하지 않습니다. 파일 확장자 또는 파일 이름에 대한 아이콘이 있는 파일 아이콘 테마는 우선적으로 사용됩니다.

파일 아이콘 테마는 테마 파일에서 showLanguageModeIcons: true|false를 정의하여 새로운 동작을 사용자 정의할 수 있습니다.

  • showLanguageModeIcons: true는 테마에서 파일 아이콘을 지정하지 않은 경우에도 기본 언어 아이콘을 표시합니다.
  • showLanguageModeIcons: false는 기본 언어 아이콘이 사용되는 것을 방지합니다.

QuickPickItem 구분선

확장 프로그램 작성자는 이제 Quick Pick에 구분선을 추가할 수 있습니다. 이는 항목을 그룹화하거나 항목 사이에 약간의 간격을 추가하는 데 유용합니다.

Quick Pick separators

기존 Quick Pick에 구분선을 추가하려면 항목 목록에 새로운 QuickPickItem을 추가하되, QuickPickItemkind 속성을 지정하고 QuickPickItemKind.Separator로 설정합니다.

위 예시에서는 항목 목록에 다음 객체를 추가합니다.

{
    label: 'APIs',
    kind: QuickPickItemKind.Separator
}

kind 속성을 지정하지 않거나 QuickPickItemKind.Default로 설정하면 해당 항목은 일반 QuickPickItem으로 처리됩니다.

vscode.workspace.createFileSystemWatcher는 이제 모든 경로를 지원합니다.

기존 vscode.workspace.createFileSystemWatcher API가 개선되어 파일 감시를 위해 작업 공간 외부의 파일 또는 폴더 경로를 포함한 모든 경로를 전달할 수 있게 되었습니다. 이전에는 파일 감시기가 작업 공간에서 열린 폴더로 제한되었습니다.

메서드에 전달하는 glob 패턴에 따라 감시기는 재귀적(예: **/*.js) 또는 비재귀적(*.js)으로 작동합니다. 재귀적 감시기는 더 많은 리소스를 필요로 하므로 가능한 한 간단한 glob 패턴을 사용하는 것이 좋습니다.

// Watch a folder non-recursively
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '*.js'));

// Watch the active text editor file
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.window.activeTextEditor.document.uri, '*'));

참고: 이 변경으로 인해 기존 파일 감시기의 동작이 변경되었습니다. glob 패턴만으로 지시된 파일 감시기(예: vscode.workspace.createFileSystemWatcher('**'))는 더 이상 작업 공간 외부에서 변경된 파일에 대한 이벤트를 수신하지 않습니다. 작업 공간 내 경로의 파일 이벤트만 수신합니다. 사용자가 열린 작업 공간이 없는 경우 이 메서드를 통해 더 이상 이벤트가 전달되지 않습니다. 이는 확장 프로그램이 작업 공간 외부의 예상치 못한 이벤트를 수신하는 것을 방지하기 위함입니다.

vscode.TerminalLocation

새로운 TerminalLocation API를 사용하여 확장 프로그램 터미널이 생성될 위치를 지정할 수 있습니다.

이를 통해 부모 터미널을 제공하여 분할 터미널을 만들고, 편집기 영역과 패널 사이에서 선택하는 등 다양한 기능을 구현할 수 있습니다.

onWill 이벤트에 대한 취소 토큰

VS Code API는 파일 작업에 참여할 수 있는 이벤트를 노출합니다. 예를 들어, onWillRenameFiles와 같은 이벤트입니다. 이러한 참여는 오래 걸릴 수 있으므로 사용자가 취소할 수 있습니다. 이번 릴리스에서는 사용자 측 취소를 해당 이벤트의 취소 토큰을 통해 확장 프로그램에서 관찰할 수 있습니다. 예를 들어, FileWillRenameEvent#token과 같습니다. 이를 통해 확장 프로그램은 비용이 많이 드는 하위 수준 작업도 취소할 수 있습니다.

Git 확장 API

  • 파일을 스테이징할 수 있도록 새로운 Repository.add 메서드가 추가되었습니다.
  • 태그를 생성하고 삭제할 수 있도록 Repository.tagRepository.deleteTag 메서드가 추가되었습니다.

onTaskType 활성화 이벤트

작업을 제공하는 확장 프로그램은 새로운 onTaskType:foo 활성화 이벤트를 사용하여 불필요한 활성화를 제한할 수 있습니다. 이는 workbench.action.tasks.runTask에 활성화하는 것보다 개선된 것으로, workbench.action.tasks.runTask는 일반적으로 작업 제공 확장 프로그램에 너무 조급합니다.

디버거 확장 프로그램 작성

VS Code는 이제 디버그 어댑터 프로토콜의 메모리 관련 기능을 구현합니다.

이번 릴리스에서는 VS Code가 디버그 어댑터 프로토콜의 다음과 같은 메모리 관련 기능을 지원하여 이진 데이터를 보고 편집하는 것을 지원하기 시작했습니다.

  • VS Code는 DAP 변수의 memoryReference 속성을 존중하며, 클라이언트 기능 supportsMemoryReferences를 디버그 어댑터에 전달하여 이를 알립니다.
  • VS Code가 디버그 어댑터로부터 supportsReadMemoryRequest 기능을 수신하면 이진 데이터를 볼 수 있는 UI가 활성화되고 데이터를 검색하기 위해 readMemory 요청을 발급합니다.
  • VS Code가 디버그 어댑터로부터 supportsWriteMemoryRequest 기능을 수신하면 이진 데이터를 편집할 수 있는 UI가 활성화되고 데이터를 저장하기 위해 writeMemory 요청을 발급합니다.
  • VS Code는 memory 이벤트를 처리하며, 클라이언트 기능 supportsMemoryEvent를 디버그 어댑터에 전달하여 이를 알립니다.

언어 서버 프로토콜

Language Server Protocol의 새로운 버전과 해당 npm 모듈이 게시되었습니다. 이 버전에는 노트북 문서에 대한 제안된 구현이 포함되어 있습니다. 사양은 여기에서 읽을 수 있습니다.

제안된 확장 API

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

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

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

터미널 지속성 비활성화

터미널을 생성할 때 TerminalOptions 또는 ExtensionTerminalOptions에서 disablePersistence를 설정하여 재시작 및 다시 로드 시 터미널 지속성을 선택적으로 해제할 수 있습니다.

export interface TerminalOptions {
  disablePersistence?: boolean;
}

인라인 힌트 API

인라인 힌트 API에 관심 있는 모든 분들을 위한 안내입니다. API는 거의 완료되었으며 대화형 레이블 부분을 지원합니다. 이는 소스 코드 위치를 힌트에 바인딩할 수 있게 하여 코드 탐색과 같은 기능을 가능하게 합니다. 또한 명령어도 지원됩니다. 이 제안의 최신 상태 및 개발은 다음에서 확인할 수 있습니다: vscode.proposed.inlayHints.d.ts

언어 상태 API

언어 상태 항목 API가 최종 확정될 예정입니다. 테스트해 보시고 vscode.proposed.languageStatus.d.ts에 대한 피드백을 제공해 주세요: vscode.proposed.languageStatus.d.ts

테스트 제안

테스트에 대한 "새로 고침" 핸들러를 구현하는 공식적인 방법을 제안합니다. vscode.proposed.testRefresh.d.ts를 확인해 보세요. 이를 통해 확장 프로그램은 VS Code의 표준 "새로 고침" 버튼을 통일하고 자체 구현을 피할 수 있습니다.

추가로, TestItemsortText 속성이 있어야 한다고 제안합니다. vscode.proposed.testSortText.d.ts.

인라인 완성: 자동 괄호 완성

확장 프로그램이 인라인 완성 항목을 제공할 때 completeBracketPairs 속성을 true로 설정할 수 있습니다. 설정된 경우 VS Code는 사용자에게 인라인 완성이 표시되기 전에 완성 텍스트의 잘못된 괄호를 닫거나 제거하여 수정하려고 시도합니다.

트리 드래그 앤 드롭 제안, 편집기 안으로 드래그 지원

트리 드래그 앤 드롭 제안은 거의 최종 확정 단계이며, TreeDragAndDropController에서 "resourceurls" MIME 유형을 지원하는 경우 트리 뷰에서 편집기 안으로 드래그하는 것을 지원합니다. 자세한 내용은 이슈 #141418에서 확인할 수 있습니다. 테스트해 보시고 vscode.proposed.treeViewDragAndDrop.d.ts에 대한 피드백을 제공해 주세요.

댓글 타임스탬프

주석 API에 Comment에 대한 새로운 timestamp 속성이 추가되었습니다. API와 함께 주석 타임스탬프 표시 방식을 제어하는 새로운 설정 comments.useRelativeTime이 있습니다. 테스트해 보시고 vscode.proposed.commentTimestamp.d.ts에 대한 피드백을 제공해 주세요.

엔지니어링

vscode-bisect 도구

문제 진단을 돕기 위해 릴리스된 VS Code Insiders 버전(웹 및 데스크톱)을 분할하는 새로운 도구를 사용할 수 있습니다.

npx vscode-bisect

git bisect와 유사하게 vscode-bisect는 과거의 릴리스된 Insiders 빌드 범위를 실행하여 해당 빌드가 문제를 재현하는지 여부를 묻습니다. 최종 결과는 문제를 일으킨 커밋 범위를 보여줍니다. 인스턴스는 사용자 데이터에 대한 전용 새 폴더를 사용하여 메인 개발 환경에 영향을 주지 않습니다.

소스에서 Code Web & Server 실행

소스에서 VS Code for the Web 및 VS Code Server를 실행하기 위한 스크립트가 scripts 폴더로 이동되었습니다.

  • ./scripts/code-web.sh|bat는 소스에서 Code for the Web(일명 "serverless")을 시작하고 브라우저에서 엽니다. 다른 옵션은 --help를 사용하세요.
  • ./scripts/code-server.sh|bat는 VS Code Server를 소스에서 시작합니다. 추가적으로 브라우저에서 웹 UI를 열려면 --launch를 추가하세요. 다른 옵션은 --help를 사용하세요.
  • ./scripts/test-web-integration.sh|bat는 원격 웹 테스트용입니다.
  • ./scripts/test-remote-integration.sh|bat는 원격 테스트용입니다.

확장

이 마일스톤에서는 VS Code가 서비스에 쿼리하는 횟수를 최소화하여 Marketplace 상호 작용을 개선했습니다.

주요 수정 사항

  • 91286 클라이언트에서 설정 동기화 활동 스로틀링
  • 117648 sass 확장 프로그램으로 emmet을 사용하여 "gtc"를 확장했을 때 결과가 이상합니다.
  • 134466 존재하지 않는 디버거 구성
  • 135677 설정 UI 링크 위에 마우스를 올리면 처음에 #이 표시됩니다.
  • 138072 최근 열린 작업 공간을 전역 저장소에 저장
  • 138805 큰 이진 파일을 열면 전체 내용이 읽힙니다.
  • 138850 디스크에서 파일 변경 후 열린 편집기가 비어 있을 수 있습니다.
  • 139880 디버그: F5를 누를 때 파일을 저장하도록 요청받음
  • 140003 다른 작업 공간 폴더에 있는 실행 구성에서 작업을 참조할 수 없습니다.
  • 140129 settings.json 파일을 두 번 클릭하면 매번 새 탭이 열립니다.
  • 140560 VS Code 중지 디버그 API 문제
  • 140967 Comment.body가 일반 문자열에서도 Markdown으로 렌더링됩니다.

감사합니다

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

웹 확장

웹 확장 프로그램으로 코드를 실행하는 확장 프로그램을 지원하는 확장 프로그램 작성자 (웹 확장 프로그램) (다음 목록은 2021년 12월 7일부터 2022년 1월 31일까지입니다)

이슈 추적

이슈 추적에 대한 기여

풀 리퀘스트

vscode 기여

vscode-css-languageservice에 대한 기여

vscode-eslint 기여

vscode-extension-samples 기여

vscode-html-languageservice에 대한 기여

vscode-js-debug 기여

  • @zkx5xkt: fix: DebugSessionTunnels. 원격/로컬 포트 사용 잘못 배치 PR #1163

vscode-pull-request-github 기여

vscode-textmate에 기여

vscode-vsce 기여

debug-adapter-protocol에 기여

monaco-editor 기여

node-jsonc-parser에 대한 기여

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