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

2020년 5월 (버전 1.46)

업데이트 1.46.1: 이 업데이트는 이 이슈들을 해결합니다.

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


Visual Studio Code 2020년 5월 릴리스에 오신 것을 환영합니다.

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

접근성

이번 마일스톤에서도 커뮤니티로부터 유용한 피드백을 받아 접근성 문제를 많이 파악하고 해결할 수 있었습니다.

  • 상태 표시줄에 키보드 탐색이 지원됩니다. **다음 파트 포커스**(F6)를 통해 상태 표시줄로 포커스가 이동하면 화살표 탐색으로 상태 표시줄 항목 간을 이동할 수 있습니다.
  • 키보드를 사용하여 선택을 시작하고 종료하기 쉽게 하기 위해 네 가지 새로운 명령이 추가되었습니다.
    • 선택 앵커 설정(⌘K ⌘B (Windows, Linux Ctrl+K Ctrl+B))
    • 앵커에서 커서까지 선택(⌘K ⌘K (Windows, Linux Ctrl+K Ctrl+K))
    • 선택 앵커 취소(Escape)
    • 선택 앵커로 이동
  • 활동 표시줄 항목에 이제 tab 역할이 지정되고 적절한 aria-expanded 상태가 설정됩니다.
  • 편집기의 Aria 레이블은 이제 pinned, preview, readonly와 같은 편집기 상태를 올바르게 전달합니다.

워크벤치

유연한 레이아웃

몇 번의 반복을 통해 레이아웃을 더 유연하게 만들기 위한 진행 상황을 발표했습니다. 이 릴리스에서는 해당 기능 세트가 일반 사용 준비가 되었습니다. 아래는 이러한 기능에 대한 개요입니다.

사이드 바와 패널 간 보기 이동

사이드 바의 보기를 패널에 배치하거나 그 반대로 배치하는 것을 선호할 수 있습니다. 이를 위해 이제 보기 헤더를 끌거나 아이콘 또는 제목으로 그룹 전체를 현재 위치에서 원하는 위치로 드래그하여 이동할 수 있습니다. 키보드에서는 **보기: 보기 이동**(workbench.action.moveView) 및 **보기: 포커스된 보기 이동**(workbench.action.moveFocusedView) 명령을 사용할 수 있습니다.

아래는 검색을 패널로, 문제를 사이드 바로 드래그하는 시연입니다.

Moving Views Between Side Bar and Panel

검색을 패널로, 문제를 활동 표시줄로 드래그

테마: GitHub Light

이전에는 검색 보기를 사이드 바에서 패널로 이동하는 설정이 있었지만, 이제 드래그 앤 드롭을 사용할 수 있으므로 해당 설정은 더 이상 사용되지 않습니다.

보기 그룹화

또한 다른 확장 프로그램에서 가져온 일부 보기를 함께 그룹화하거나 기본 보기 그룹이 마음에 들지 않을 수 있습니다. 보기를 기존 그룹으로 이동하거나 특정 보기 집합에 대한 새 그룹을 만들 수 있습니다. 이전과 마찬가지로 사이드 바와 패널 전체에서 작동합니다. 아래는 몇 가지 예시입니다.

Moving Timeline from Explorer to Source Control

탐색기에서 타임라인 보기를 소스 제어로 드래그

Side By Side Debug Console and Watch View

실행 사이드 바에서 보기 보기를 패널의 디버그 콘솔 옆으로 드래그

Custom History Group

타임라인과 GitLens를 사용하여 사이드 바와 패널에 사용자 지정 기록 그룹 만들기

테마: GitHub Light

보기 위치 재설정

보기 및 보기 그룹은 컨텍스트 메뉴를 통해 기본 위치로 재설정할 수 있습니다. 보기가 기본 위치에서 이동된 경우 **위치 재설정** 항목이 이를 홈으로 이동시킵니다. 모든 보기와 그룹을 기본 위치로 재설정하는 **보기: 포커스된 보기 위치 재설정**(workbench.action.resetFocusedViewLocation) 및 **보기: 보기 위치 재설정**(workbench.action.resetViewLocations) 명령도 있습니다.

보기를 제공하는 확장 프로그램 작성자를 위해

보기가 워크벤치 주위로 이동될 때 아이콘이나 추가 컨텍스트가 표시되어야 할 수 있습니다. 보기를 기여할 때 작성자는 이제 icon 속성과 contextualTitle을 제공할 수 있습니다. 제공되지 않으면 기본적으로 기여하는 보기 컨테이너의 아이콘과 제목이 사용됩니다.

마지막으로 확장 프로그램 작성자는 이제 activitybar가 아닌 panel에 직접 보기 컨테이너를 기여할 수 있습니다. 이는 트리 보기 확장 프로그램 가이드에 설명되어 있습니다.

탭 고정

컨텍스트 메뉴를 사용하거나 새 명령 workbench.action.pinEditor(⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter))를 사용하여 탭을 고정할 수 있습니다.

Pin Tabs

테마: GitHub Light

고정된 탭에는 중요 파일을 표시하는 데 도움이 되는 몇 가지 유용한 기능이 있습니다.

  • 고정된 탭은 항상 고정되지 않은 탭보다 먼저 나타납니다.
  • 많은 탭을 열어 두어도 화면 밖으로 스크롤되지 않습니다.
  • 다른 탭 닫기와 같은 명령을 사용할 때 닫히지 않습니다.
  • 열린 편집기 수가 설정된 제한을 초과해도 닫히지 않습니다.

탭을 드래그 앤 드롭하여 고정 상태를 변경할 수도 있습니다.

고정된 탭은 공간을 절약하기 위해 아이콘 크기로 시각적으로 축소됩니다 (아이콘이 비활성화된 경우 파일 이름의 첫 글자를 표시). 고정된 탭에 변경 표시를 보려면 workbench.editor.highlightModifiedTabs: true를 설정할 수 있습니다.

참고: 고정된 탭을 표시하는 다른 방법에 대해 계속 고민하고 있습니다. 의견이 있으시면 보조 탭 표시 또는 고정된 탭에 더 많은 컨텍스트 표시 설정에 대한 기존 이슈에 의견을 공유해 주세요.

검색 에디터

검색 편집기가 생성되는 방식을 구성하기 위한 몇 가지 새로운 옵션이 있습니다.

  • search.searchEditor.defaultNumberOfContextLines - 검색 편집기가 기본적으로 표시하는 컨텍스트 라인 수를 구성합니다.
  • search.searchEditor.reusePriorSearchConfiguration - 새 검색 편집기를 만들 때 마지막으로 활성화된 검색 편집기의 구성을 재사용합니다.
  • 키 바인딩 인수에서 검색 편집기 구성 변수 지원 (매개변수 세부 정보).

스크롤을 강제하지 않고 탐색기 자동 표시

explorer.autoReveal 설정에 대한 새 옵션 focusNoScroll이 있습니다. 이 옵션을 사용하면 탐색기가 파일을 자동으로 선택하지만 탐색기 보기에서 해당 파일을 표시하기 위해 스크롤하지는 않습니다.

목록 및 트리용 부드러운 스크롤

workbench.list.smoothScrolling 설정을 활성화하면 부드러운 스크롤이 부족한 하드웨어 (예: Windows의 분리형 마우스 휠)에서도 목록과 트리에서 스크롤이 훨씬 부드러워집니다.

Smooth scrolling

새시 크기 구성

이제 workbench.sash.size 설정을 사용하여 보기/편집기 간의 드래그 영역의 픽셀 단위 피드백 영역 크기를 구성할 수 있습니다. 마우스로 보기를 크기 조정하기 어렵다고 느끼면 더 큰 값으로 설정하세요.

스크린캐스트 모드 글꼴 크기

새로운 screencastMode.fontSize 설정으로 스크린캐스트 모드에서 사용되는 픽셀 단위 글꼴 크기를 구성할 수 있습니다.

VS Code는 이제 작업 공간에 있는 GitHub 원격에 대한 URL 링크를 직접 열 수 있습니다. 또한 GitHub로 로그인한 경우 내 GitHub 프로필 아래의 모든 링크는 신뢰할 수 있습니다.

편집기

닫힌 파일에 대한 파일 간 실행 취소

파일이 닫혔더라도 파일 간 실행 취소가 가능합니다. 편집된 파일이 다시 열리고 기호 이름 바꾸기와 같은 파일 간 작업이 모든 관련 파일에서 실행 취소됩니다.

비정상적인 줄 끝 문자

VS Code는 현재 CR (캐리지 리턴), LF (라인 피드), CRLF를 줄 끝 문자로 인식합니다. 일부 프로그래밍 언어는 줄 끝 문자로 간주되는 것에 대한 다른 정의를 가지고 있습니다. 이는 언어마다 다르며, 예를 들어 LS (줄 구분 기호) 및 PS (문단 구분 기호)는 C# 및 JavaScript에서 줄 끝 문자이지만 HTML, PHP 또는 Java에서는 그렇지 않습니다. 이러한 줄 끝 차이는 VS Code와 언어 서버 간에 (line;char) 좌표를 사용하여 여러 개념이 통신되기 때문에 언어 서버와 통신할 때 문제가 발생할 수 있습니다. 줄 끝 문자에 대한 정의가 다르면 파일의 줄 및 위치 매핑이 달라질 수 있습니다.

VS Code는 이제 파일을 열 때 열린 파일에 LS 또는 PS가 포함되어 있는지 확인하고 이러한 문자를 제거해도 되는지 묻는 메시지를 표시합니다. 이러한 비정상적인 줄 끝 문자는 실제로는 드래그 앤 드롭으로 인해 실수로 소스 코드에 삽입되는 경우가 드뭅니다.

통합 터미널

지난달의 통합 터미널 링크 미리 보기가 이전 구현을 대체했습니다. 새 링크 구현은 이제 다음을 지원합니다.

  • 편집기의 링크 감지를 사용하여 향상된 웹 및 file:// 링크 감지.
  • 폴더를 탐색기에서 열거나 새 VS Code 창을 여는 폴더 링크 지원.
  • 다른 링크 유형에 대한 다른 링크 동작, 작업 공간 검색 (terminal.integrated.wordSeparators 설정 기반) "단어" 링크로 대체.
  • 편집기와 유사한 링크 강조 표시 및 도구 설명 환경.

Terminal with various links

테마: Topaz (Dim)

작업

최근 작업 성능 개선을 계속하여, **빌드 작업 실행**은 더 이상 확장 프로그램에 항상 작업을 요청하지 않습니다. 폴더의 tasks.json에 기본 빌드 작업이 구성되어 있으면 **빌드 작업 실행**은 기본 빌드 작업을 실행하기 전에 모든 확장 프로그램의 모든 작업을 찾지 않고 해당 작업만 해결하려고 시도합니다.

소스 제어

터미널에서 열기

이제 소스 제어 보기의 컨텍스트 메뉴에서 리포지토리를 터미널에서 열 수 있습니다.

Open in terminal from Source Control view

GitHub에서 원격 추가

이제 **Git: 원격 추가...** 명령을 사용하여 GitHub 리포지토리를 로컬 리포지토리의 원격으로 추가할 수 있습니다.

Use Add Remote Command

GitHub에 게시할 때 .gitignore 생성

이제 GitHub에 작업 공간을 게시할 때 .gitignore 파일을 생성할 수 있습니다. GitHub에 작업 공간을 게시할 때 리포지토리에 포함할 파일을 선택하도록 요청하며, 포함되지 않은 파일은 .gitignore 파일에 추가됩니다.

Select which files to include in the repository

입력 필드 글꼴 패밀리

이제 **Scm: 입력 글꼴 패밀리** 설정을 사용하여 소스 제어 입력 필드에서 사용되는 글꼴 패밀리를 사용자 지정할 수 있습니다. 설정은 다음 값을 지원합니다.

  • default - 워크벤치 사용자 인터페이스 글꼴 패밀리.
  • editor - **편집기: 글꼴 패밀리** 설정에 지정된 글꼴 패밀리.
  • font family name - 입력 필드에 사용할 글꼴 패밀리 이름 (예: Cascadia Code).

진행 중인 리베이스 중단

이제 **Git: 리베이스 중단** 명령을 사용하여 진행 중인 리베이스 작업을 중단할 수 있습니다.

디버깅

자동 디버그 구성 개선

이번 마일스톤에서는 자동 디버그 구성 환경을 개선했습니다.

  • 이전 마일스톤에서는 확장 프로그램 작성자가 현재 프로젝트를 분석하고 디버그 구성을 자동으로 제공할 수 있는 기능을 도입했습니다. 이러한 디버그 구성은 동적으로 생성되므로 launch.json 구성 파일에 표시되지 않습니다. 바로 작동하는 경우에는 좋지만, 때로는 구성을 수정해야 할 수 있습니다 (예: 추가 인수를 추가). 이제 자동 디버그 구성을 launch.json에 저장하여 편집할 수 있는 옵션이 있습니다. 이렇게 하려면 **디버그: 디버그 선택 및 시작** 빠른 선택에서 자동 디버그 구성 끝에 있는 기어 버튼을 사용하세요.

    Selecting Edit automatic debug configuration in launch

  • 이제 실행 및 디버그 시작 보기에서 모든 자동 디버그 구성을 표시할 수 있습니다.

    Automatic debug configs in start view

  • 디버그 드롭다운이 이전에 선택한 자동 디버그 구성을 기억합니다.

단계 진입 대상

많은 중첩된 함수 호출이 있는 문으로 디버깅하는 것은 관심 없는 함수를 단계별로 실행해야 할 수 있기 때문에 고통스러울 수 있습니다. 이 시나리오를 개선하기 위해 디버그 어댑터 프로토콜은 관심 있는 함수로 직접 단계별로 실행하기 위한 UI를 표시하는 "단계 진입 대상" 기능을 지원했습니다.

이번 마일스톤에서는 VS Code에서 이 기능을 사용하기 시작했습니다. 디버깅이 문에서 중지되면 컨텍스트 메뉴에 **단계 진입 대상**이라는 새 동작이 표시됩니다. 이 동작은 현재 스택 프레임에서 사용 가능한 모든 대상 (일반적으로 함수) 목록을 표시합니다. 그 중 하나를 선택하면 해당 대상으로 단계별로 실행됩니다.

각 스택 프레임은 고유한 대상 집합을 가질 수 있다는 점에 유의하십시오. 따라서 **단계 진입 대상** 동작의 결과는 CALL STACK 보기에서 현재 선택된 프레임에 따라 달라집니다.

Step into targets in context menu

현재로서는 Mock Debug 확장만 (가짜) **단계 진입 대상** 지원을 제공하지만, 곧 Julia 디버거와 같은 다른 디버그 확장 프로그램도 지원할 것입니다.

언어

TypeScript 3.9

VS Code에는 TypeScript 3.9.4가 포함되어 있습니다. 이 주요 TS 업데이트는 몇 가지 새로운 도구 기능, 성능 개선 및 다수의 버그 수정을 제공합니다. TS 3.9에 대한 자세한 내용은 TypeScript 블로그에서 확인할 수 있습니다.

CommonJS 자동 가져오기

VS Code가 CommonJS 스타일 JavaScript 모듈에서 작업 중임을 감지하면, 자동 가져오기는 이제 import 대신 require을 사용합니다.

Auto imports using 'require' in a JS file

리팩토링 줄바꿈 유지

**메서드로 추출** 및 **새 파일로 이동**과 같은 JavaScript 및 TypeScript에 대한 리팩토링은 이제 리팩토링된 소스 코드의 원래 서식을 유지하려고 시도합니다. 여기에는 선택 영역에 있는 모든 줄 바꿈이 포함됩니다.

The 'extract method' refactoring preserving newlines

누락된 모든 가져오기 추가 소스 동작

VS Code는 오랫동안 JavaScript 또는 TypeScript 파일에서 누락된 모든 가져오기를 추가하는 빠른 수정을 지원했습니다. 이번 반복에서는 파일의 어느 곳에서나 이를 트리거할 수 있는 새로운 **누락된 모든 가져오기 추가** 소스 동작을 도입했습니다.

Adding imports using a source action

이를 통해 **누락된 모든 가져오기 추가**에 대한 키 바인딩을 설정할 수도 있습니다.

{
  "key": "ctrl+shift+i",
  "command": "editor.action.sourceAction",
  "args": {
    "kind": "source.addMissingImports",
    "apply": "first"
  }
}

또는 저장 시 **누락된 모든 가져오기 추가**를 활성화할 수도 있습니다.

"editor.codeActionsOnSave": [
    "source.addMissingImports"
]

JS/TS 작업 공간의 기호로 이동에 모든 열린 프로젝트 포함

기본적으로 JavaScript 및 TypeScript에 대한 작업 공간 기호 검색은 이제 열려 있는 모든 jsconfigtsconfig 프로젝트를 검색합니다. 이전에는 집중된 파일이 속한 프로젝트의 검색 결과만 포함되었습니다.

이 동작은 typescript.workspaceSymbols.scope 설정으로 제어되며 TS 3.9+가 필요합니다. 이전 동작으로 되돌리고 현재 프로젝트만 검색하려면 "typescript.workspaceSymbols.scope": "currentProject"를 설정하십시오.

누락된 가져오기 빠른 수정 추가는 이제 기본으로 표시될 수 있습니다.

JavaScript 및 TypeScript에 대한 **누락된 가져오기 추가** 빠른 수정은 이제 오류에 대한 기본 수정으로 표시될 수 있습니다. 이를 통해 단일 키 입력으로 누락된 가져오기를 추가할 수 있습니다. ⌥⌘. (Windows, Linux Shift+Alt+.).

단일 유효한 가져오기만 있는 경우에만 **누락된 가져오기 추가**가 기본 수정으로 표시됩니다. 프로젝트에 여러 개의 잠재적 가져오기가 있는 경우에도 일반 코드 동작 메뉴를 사용하여 어떤 가져오기를 사용할지 선택해야 합니다. 또한 JavaScript에서 **누락된 가져오기 추가** 빠른 수정을 활성화하려면 타입 검사를 활성화해야 합니다.

JSON 오프라인 모드

새 설정 json.schemaDownload.enable을 사용하면 JSON 확장이 httphttps에서 JSON 스키마를 가져오는 것을 허용할지 여부를 제어할 수 있습니다.

현재 편집기가 다운로드할 수 없는 스키마를 사용하려고 하면 상태 표시줄에 경고 삼각형이 나타납니다. 그러면 유효성 검사, 코드 완성 및 도구 설명과 같은 스키마 기반 기능이 제한됩니다.

JSON warning triangle

브라우저 지원

탭 제목의 디버깅 중지 표시기

브라우저에서 확장을 디버깅할 때 디버깅된 확장은 새 브라우저 탭에 표시되며 디버거 탭을 비활성화합니다 (숨김). 디버깅 대상이 어떤 이유로 중지되면 (예: 중단점 히트), 브라우저에서 이를 위한 API를 제공하지 않기 때문에 디버거 탭을 활성화할 수 없습니다. 이렇게 하면 디버깅된 확장이 중지되었음을 발견하기가 거의 불가능합니다.

이 문제를 완화하기 위해 이제 탭 제목을 업데이트하여 빨간색 원 표시기 🔴 (중단점을 닮은)를 포함시킵니다. 디버거 탭이 활성화되면 빨간색 점이 제거됩니다.

Debuggee stopped indicator in web view

통합 터미널에서 VS Code 실행

브라우저에서 실행 중인 VS Code에서 통합 터미널을 열 때 code를 입력하면 브라우저에서 작동하는 몇 가지 유용한 명령에 액세스할 수 있습니다.

Terminal Remote

이번 반복에서 여러 옵션에 대한 지원을 확장했습니다.

  • --goto 특정 줄에서 파일 열기
  • --diff 두 파일 비교
  • --wait 프로그램이 파일 닫기를 기다리도록 함
  • --add 현재 작업 공간에 폴더 추가

GitHub Codespaces에서 예를 들어 브라우저 기반 VS Code를 Git 편집기로 사용할 수 있습니다.

VS Code Git Editor in Browser

테마: GitHub Light

파일/폴더 업로드

VS Code를 사용하면 파일을 파일 탐색기에 드롭하여 업로드할 수 있습니다. 이번 반복에서는 이 기능을 개선하여 폴더를 드롭하여 업로드할 수 있도록 했습니다. 여기에는 모든 하위 폴더 및 파일이 포함됩니다. 이는 시간이 오래 걸리는 작업일 수 있으므로 상태 표시줄에 진행 상황이 표시되며 필요한 경우 작업을 취소할 수 있습니다.

Drag files into File Explorer

계정 관리

이전 릴리스에서는 설정 동기화 미리 보기와 함께 새 계정 관리 UI의 미리 보기를 도입했습니다. 이제 이 UI가 기본적으로 표시됩니다. 새 제안된 인증 공급자 API를 사용하는 확장 프로그램은 여기에 로그인 요청을 표시할 수 있으며, 계정을 보고 확장 프로그램 액세스를 관리할 수 있습니다. 현재 이 API를 사용하는 확장 프로그램은 제한적이며, API가 안정화되면 채택을 늘리기 위해 노력할 것입니다.

미리 보기 기능

미리보기 기능은 릴리스 준비가 되지 않았지만 사용할 만큼 기능적입니다. 개발 중인 동안 초기 피드백을 환영합니다.

설정 동기화

지난 몇 달 동안 여러 컴퓨터에서 VS Code 기본 설정을 동기화하는 기능을 지원하기 위해 노력했으며, 이 기능은 Insiders 릴리스에서 미리 볼 수 있습니다.

이번 마일스톤에서는 설정 동기화 관리 및 진단 지원을 강화했습니다.

동기화된 컴퓨터 보기

VS Code 기본 설정을 동기화하는 컴퓨터 목록을 표시하는 **동기화된 컴퓨터** 보기를 추가했습니다. 사용하는 VS Code 유형 (Insiders 또는 Stable) 및 플랫폼을 기반으로 기본 이름이 제공되지만, 보기에서 컴퓨터 항목에 사용 가능한 편집 작업을 사용하여 항상 이름을 업데이트할 수 있습니다.

Synced Machines view

테마: GitHub Sharp with Customizations

명령 팔레트에서 **기본 설정 동기화: 동기화된 데이터 표시** 명령을 사용하여 이 보기를 열 수 있습니다.

동기화된 데이터 보기

동기화된 데이터 보기에 다음과 같은 개선 사항을 추가했습니다.

  • 데이터가 동기화되는 컴퓨터를 이제 볼 수 있습니다.
  • 보기의 데이터 항목에서 사용 가능한 **복원** 작업을 사용하여 특정 상태로 복원할 수 있습니다.
  • 보기 헤더 아래의 **추가 동작** (...) 버튼에서 **동기화된 데이터 재설정** 작업을 사용하여 클라우드의 데이터를 재설정할 수 있습니다.

Synced Data view

테마: GitHub Sharp with Customizations

이제 다른 컴퓨터의 데이터와 동기화하려고 할 때 확인하여 적절한 조치를 취하도록 하여 동기화를 켤 때 더 많은 지원을 제공합니다.

  • 로컬 대체 - 현재 컴퓨터의 데이터를 클라우드의 동기화된 데이터로 대체합니다.
  • 병합 - 현재 컴퓨터의 데이터를 클라우드의 동기화된 데이터와 병합합니다.
  • 동기화된 데이터 표시 - 동기화된 데이터 보기를 열어 클라우드의 동기화된 데이터를 확인합니다.

Replace or Merge pop-up

새 JavaScript 디버거

이번 달에는 JavaScript 디버거에 대한 작업을 계속했습니다. 5월 중순 이후로 Insiders에서 기본 디버거가 되었으며, 이번 릴리스에서는 VS Code Stable에 포함되었습니다 (기본값은 아님). debug.javascript.usePreview 설정을 활성화하여 기존 실행 구성을 사용할 수 있습니다.

이번 달의 진행 상황은 주로 기존 기능의 다듬기 및 안정화에 중점을 두었습니다.

  • 브라우저 디버깅을 위한 다중 탭 지원: 브라우저 또는 웹뷰를 실행할 때 여러 탭에 연결할 수 있습니다. 기본적으로 js-debug는 urlFilter와 일치하는 모든 탭에 연결됩니다. 브라우저에 연결할 때 이전 디버거와 같이 단일 탭에 연결하려면 실행 구성에서 "targetSelection": "pick"을 설정할 수 있습니다.
  • 향상된 탭 구별: 디버그 세션 이름이 여러 탭을 더 정확하게 구별합니다. 또한, 호출 스택 보기의 디버그 세션 컨텍스트 메뉴에 **탭 포커스** 동작을 추가했습니다. 이를 사용하여 올바른 페이지를 보고 있는지 확인할 수 있습니다.
  • getter 자동 확장 옵션: Chrome 동작과 일치하도록 속성 getter는 기본적으로 변수 보기 또는 디버그 콘솔에 표시될 때 평가되지 않습니다. 이제 debug.javascript.autoExpandGetters 옵션을 설정하여 이 동작을 구성할 수 있습니다.
  • webpack 번들 유형에 대한 성능 개선: 특정 유형의 webpack 번들 (eval 소스 맵으로 빌드된 번들)은 js-debug에서 느리게 실행되었습니다. 이제 그렇지 않습니다.

TS 4.0 야간 빌드 지원

VS Code 1.46에는 TypeScript 4.0 야간 빌드에 대한 미리 보기 지원이 포함되어 있습니다. 야간 빌드는 더 유연한 리팩토링 선택과 같은 몇 가지 새로운 도구 기능에 대한 지원을 제공하며, 현재 적극적으로 작업 중입니다.

지금 바로 TypeScript Nightly 확장 프로그램을 설치하여 TypeScript 4.0 야간 빌드를 사용해 볼 수 있습니다. 피드백을 공유하고 TypeScript 4.0에서 버그가 발생하는 경우 알려주십시오.

확장 프로그램 기여

노트북

빠른 개요

GitHub 이슈 노트북과 같은 노트북 확장 프로그램은 이제 빠른 개요를 지원합니다. kb('workbench.action.gotoSymbol')을 누르거나 **편집기에서 기호로 이동** 명령을 사용하면 현재 노트북의 모든 Markdown 및 코드 셀 미리 보기를 볼 수 있습니다.

Notebook quick outline preview list

테마: GitHub 테마

오류 및 기호 탐색

F8 및 **모든 참조 찾기**의 작동 방식을 개선했습니다. 모든 코드 탐색 제스처는 노트북 외부에서처럼 자연스럽게 느껴져야 합니다. 예를 들어, 문제 보기는 이제 셀별이 아닌 노트북별로 그룹화된 모든 셀의 모든 오류를 표시합니다.

Problems panel with errors grouped by notebook

테마: GitHub 테마

셀 결합/분할

셀을 빠르게 결합하거나 셀을 더 작은 조각으로 분할하기 위한 두 가지 명령 세트를 도입했습니다.

Running Join and Split Notebook cells commands

테마: GitHub 다크 테마

유지된 노트북

고정되거나 변경된 노트북 편집기는 이제 작업 공간에 영구적으로 저장되므로, 노트북이 백그라운드로 이동하거나 다른 편집기 그룹으로 이동해도 사용자는 노트북 작업 상태를 잃지 않습니다.

Persisted Notebook

테마: GitHub 다크 테마

통합 실행 취소/다시 실행 스택

노트북 셀 조작 또는 노트북 셀 내용 수정과 같은 사용자 작업은 이제 동일한 실행 취소/다시 실행 스택에서 추적됩니다.

Show tracking of Unified Undo/Redo stack

테마: GitHub 다크 테마

GitHub Pull Requests 및 Issues

GitHub Pull Requests and Issues 확장 프로그램에 대한 작업이 계속 진행되고 있으며, 이를 통해 풀 리퀘스트 및 이슈를 작업, 생성 및 관리할 수 있습니다. 이번 릴리스에 대한 몇 가지 업데이트는 다음과 같습니다.

  • 이슈 도구 설명의 레이블 개선.
  • 이슈 및 사용자 제안은 이제 주석 및 일반 텍스트에서만 트리거됩니다.
  • 새로운 이슈 편집기를 통해 담당자 및 레이블을 설정할 수 있습니다.

새로운 기능 및 업데이트에 대한 자세한 내용은 확장 프로그램 0.17.0 릴리스의 전체 변경 로그를 참조하십시오.

원격 개발

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

1.46의 새 기능에는 다음이 포함됩니다.

  • 개발 컨테이너: GPG 포워딩 지원.
  • 개발 컨테이너: Docker 볼륨 검사 지원.
  • 개발 컨테이너: 새 devcontainer.json 명령 속성.

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

Hex 편집기

사용자 지정 편집기 API가 이진 편집기 지원으로 완료됨에 따라, 네이티브 16진수 편집 환경을 제공하기 위해 16진수 편집기 확장 프로그램을 개발했습니다.

Hex Editor

이 확장 프로그램은 아직 개발 중이며 현재는 파일을 16진수로 열고 탐색하는 기능만 지원합니다. 탐색 환경을 계속 개선한 후 편집을 지원할 예정입니다. 확장 프로그램을 시도해 보고 피드백을 제공하거나 vscode-hexeditor 리포지토리에 이슈를 제출할 수 있습니다.

확장 프로그램 작성

파일 경로 대소문자

대소문자를 구분하지 않는 파일 시스템에서 VS Code가 경로와 URI를 처리하는 방식에 대한 몇 가지 버그를 수정했습니다. 이 릴리스 이전에는 대소문자가 다른 경로가 같은 문서를 열지 않고 별도의 분리된 문서를 열었습니다. 이 동작은 종종 혼란을 야기하고 때로는 데이터 손실을 초래했습니다.

그러나 이러한 버그를 수정하면서 openTextDocument 함수의 동작이 변경되었습니다. 이제 함수는 입력된 URI와 대소문자가 다른 URI를 가진 문서를 반환할 수 있습니다. 이는 확장 프로그램이 요청한 URI가 아닌 TextDocument#uri를 진실의 출처로 사용해야 함을 의미합니다.

아래 샘플은 새로운 동작을 보여줍니다.

// case-insensitive file system

const uriA = vscode.Uri.file('/foo/bar.code');
const docA = await vscode.workspace.openTextDocument(uriA);

const uriB = vscode.Uri.file('/foo/BAR.code');
const docB = await vscode.workspace.openTextDocument(uriB);

assert.ok(docA === docB); // same document
assert.ok(docB.uri.toString() === uriA.toString()); // uriA is used, NOT uriB
assert.ok(docB.uri.toString() !== uriB.toString());

새로운 디버그 콘솔 테마 색상

디버그 콘솔 보기를 스타일링하는 새로운 색상이 있습니다.

  • debugConsole.infoForeground: 디버그 콘솔의 정보 메시지에 대한 전경색
  • debugConsole.warningForeground: 디버그 콘솔의 경고 메시지에 대한 전경색
  • debugConsole.errorForeground: 디버그 콘솔의 오류 메시지에 대한 전경색
  • debugConsole.sourceForeground: 디버그 콘솔의 소스 파일 이름에 대한 전경색
  • debugConsoleInputIcon.foreground: 디버그 콘솔 입력 표시기 아이콘에 대한 전경색

새로운 입력 테마 색상

입력에 대한 새로운 색상 테마 옵션도 있습니다. inputOption.activeForeground를 통해 활성 입력 옵션의 전경색을 설정할 수 있습니다. 이는 검색 보기 및 찾기 위젯 (편집기, 터미널, 디버그 콘솔)에 표시됩니다.

Input option foreground color

테마: GitHub 다크 테마

새로운 codicon 아이콘

다음은 codicon 라이브러리에 추가된 새 아이콘입니다.

  • server-process
  • server-environment
  • record
  • pass
  • stop-circle
  • play-circle

New available icons

테마: GitHub 다크 테마

Provider는 제네릭 타입을 사용합니다.

vscode.d.ts 타이핑은 이제 두 단계 제공자(별도의 'provide' 및 'resolve' 메서드를 가진 제공자)를 모두 제네릭으로 만듭니다. 목표는 'provide' 호출 결과가 'resolve' 호출로 다시 전달된다는 것을 더 명확하게 하는 것이었습니다.

예를 들어, DocumentLinkProvider의 새로운 제네릭 정의는 다음과 같습니다.

export interface DocumentLinkProvider<T = DocumentLink> {
  provideDocumentLinks(
    document: TextDocument,
    token: CancellationToken
  ): ProviderResult<T[]>;

  resolveDocumentLink?(link: T, token: CancellationToken): ProviderResult<T>;
}

모든 제공자는 기본 제네릭 인수를 가지므로 이 변경으로 인해 기존 확장 프로그램에 오류가 발생하지 않습니다. 이전에 'resolve'를 구현할 때 캐스트나 타입 검사를 사용했다면, 대신 제네릭 제공자를 사용하도록 코드를 업데이트하는 것을 고려해 보세요.

class MyDocLinkProvider implements DocumentLinkProvider<MyDocumentLink> {

  provideDocumentLinks(document: TextDocument, token: CancellationToken): MyDocumentLink[] { ... }

  resolveDocumentLink(link: MyDocumentLink, token: CancellationToken): MyDocumentLink { ... }
}

웹뷰에서 테마별 CSS 작성하기

웹뷰의 body 요소에는 현재 활성화된 테마의 전체 이름을 저장하는 vscode-theme-name이라는 새로운 데이터 속성이 있습니다. 이를 통해 웹뷰에서 테마별 CSS를 작성할 수 있습니다.

body[data-vscode-theme-name="One Dark Pro"] {
    background: hotpink;
}

VS Code에서 사용할 수 있는 테마 수를 고려할 때, 테마별 CSS는 예외적인 경우에만 작성해야 한다는 점을 명심하세요. 일반 웹뷰는 대신 .vscode-light.vscode-dark 클래스 이름과 VS Code CSS 변수를 사용하여 사용자가 선택한 테마에 맞게 조정되는 CSS를 작성해야 합니다.

사용자 지정 바이너리 편집기

사용자 지정 바이너리 편집기를 위한 API가 최종 확정되었습니다. 사용자 지정 편집기 API를 통해 확장은 VS Code의 기본 텍스트 편집기를 대체하거나 사용자가 전환할 수 있는 사용자 지정 웹뷰 기반 편집기를 만들 수 있습니다. 이는 이미지 또는 3D 모델과 같은 애셋 파일을 VS Code 내에서 직접 미리 보거나 특정 파일 형식에 대한 보다 전문화된 편집 인터페이스를 구축하는 데 사용할 수 있습니다. 새로운 바이너리 사용자 지정 편집기 API를 사용하면 텍스트 기반이 아닌 파일 형식에 대한 읽기/쓰기 편집기도 구축할 수 있습니다.

A custom editor for binary files

사용자 지정 편집기 확장 프로그램 가이드에서 API에 대해 자세히 알아보세요. 텍스트 및 바이너리 파일 형식 모두에 대한 사용자 지정 편집기 예제를 포함하는 사용자 지정 편집기 확장 프로그램 샘플도 확인해 보세요.

resolveCompletionItem 완화

CompletionItemProvider#resolveCompletionItem 함수를 사용하면 제공자가 지연 방식으로 완료 항목에 더 많은 데이터를 추가할 수 있습니다. 이 "지연" 데이터는 선택 사항이어야 하며 완료 항목의 삽입 동작을 변경해서는 안 됩니다. 확장 프로그램은 여전히 additionalTextEdits를 채울 수 있으며, 완료 항목이 삽입된 **후** 추가 편집이 도착하면 편집기에서 해당 편집을 적용하려고 시도합니다. 이는 삽입 텍스트(insertText) 자체에 적용되는 것이 아니라 추가 편집에만 적용된다는 점에 유의하세요. 삽입 텍스트는 제공된 후에는 변경될 수 없습니다.

onStartupFinished 활성화 이벤트

이미 존재하는 * 활성화 이벤트와 유사한 새로운 활성화 이벤트가 추가되었습니다. 새로운 onStartupFinished 활성화 이벤트는 확장 프로그램이 VS Code 시작 직후에 활성화되기를 원하지만 시작 자체에 포함되지는 않기를 원할 때 사용해야 합니다.

환경 변수 컬렉션

ExtensionContext.EnvironmentVariableCollection API가 안정화되어 확장 프로그램이 터미널 환경에 기여할 수 있게 되었습니다.

const collection = context.environmentVariableCollection;
const separator = process.platform === 'win32' ? ';' : ':';
collection.prepend('PATH', `/foo${separator}`);
collection.replace('JAVA_HOME', '/bar');

이 컬렉션은 확장 프로그램 및 작업 영역별이며 VS Code는 여러 확장 프로그램 간의 충돌을 처리합니다. 창이 다시 로드되어도 유지되므로 창이 로드된 직후 생성된 터미널은 확장 프로그램 호스트 시작을 기다리지 않고 마지막으로 알려진 버전을 사용합니다. 이러한 지속된 컬렉션은 컬렉션을 폐기하거나 확장 프로그램이 제거될 때 제거됩니다.

컬렉션이 변경되면 터미널에 표시기가 나타납니다. 이 표시기가 모든 변경 사항에 표시되는지 아니면 "대기 중인" 터미널에만 표시되는지는 terminal.integrated.environmentChangesIndicator 설정에 의해 정의됩니다. 이 API는 이제 기본 Git 확장 프로그램에서도 사용하여 VS Code가 인증 제공자가 되도록 합니다.

디버그 어댑터 프로토콜

새로운 명령어 중단점

새로운 "명령어" 중단점 유형이 추가되어 메모리 주소의 명령어에서 중단할 수 있습니다. 메모리 주소는 evaluate, variables, stackTracegotoTargets 요청에서 선택적으로 제공되는 기호 형태로 지정됩니다. 해당 기능인 supportsInstructionBreakpoints는 디버그 어댑터가 명령어 중단점을 지원하는지 여부를 나타냅니다.

"단계 실행 세분성" 지원

단계 실행 요청 next, stepIn, stepOut, stepBack에 "문장", "줄" 또는 "명령어"를 단계 실행할지 여부를 제어하는 새로운 선택적 granularity 인수가 추가되었습니다. 해당 기능인 supportsSteppingGranularity는 디버그 어댑터가 이 기능을 지원하는지 여부를 나타냅니다.

제안된 확장 API

모든 마일스톤에는 새로운 제안 API가 제공되며 확장 작성자는 이를 사용해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 원합니다. 제안된 API를 사용하려면 다음을 수행해야 합니다.

  • 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
  • 확장의 package.json 파일에 이 줄이 있어야 합니다: "enableProposedApi": true.
  • vscode.proposed.d.ts 파일의 최신 버전을 프로젝트 소스 위치로 복사합니다.

제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경이 있을 수 있으며 기존 확장을 손상시키고 싶지 않습니다.

Git 확장 API

기본 Git 확장 프로그램은 확장에서 사용할 수 있는 API를 제공합니다. 기존 API는 Repository에 대한 log 결과를 가져오는 방법을 제공했습니다. 업데이트된 API는 이제 logpath로 제한할 수 있습니다.

export interface LogOptions {
  readonly maxEntries?: number;
  readonly path?: string;
}
export interface Repository {
  log(options?: LogOptions): Promise<Commit[]>;
}

또한 이제 BranchQuery를 기반으로 getBranches를 위한 Git 확장 API가 있습니다.

export interface BranchQuery {
  readonly remote?: boolean;
  readonly contains?: string;
}
export interface Repository {
  getBranches(query: BranchQuery): Promise<Ref[]>;
}

AccessibilityInformation

화면 판독기를 지원하기 위해 TreeItem, StatusBarItemTimelineItem 요소에 AccessibilityInformation이 추가되었습니다. AccessibilityInformationlabelrole을 포함합니다. label은 화면 판독기에서 읽히고 role은 요소의 접근성 특성을 설명합니다.

엔지니어링

Windows ARM64 Insiders

Windows ARM 64비트를 위한 공식 Insider 빌드가 새로 나왔으며, Insiders 다운로드 페이지에서 사용할 수 있습니다.

이 빌드는 Microsoft Surface Pro X와 함께 작동하므로 사용해 보시고 의견을 알려주세요.

Windows ARM64

--crash-reporter-directory 인수로 문제 진단

새로운 명령줄 인수 --crash-reporter-directory를 사용하면 충돌 보고서를 저장하려는 로컬 폴더를 지정할 수 있습니다. 이는 확장 프로그램 호스트의 충돌에도 작동하며 VS Code가 충돌하고 문제를 보고하려는 경우에 사용할 수 있습니다.

사전 로드 스크립트

VS Code에 Electron preload 스크립트가 추가되어 특정 Electron API를 창에 노출합니다. 이는 완전히 샌드박스 처리된 창을 향한 첫 단계 중 하나입니다. 진행 상황은 이슈 #92164에서 설명합니다.

확장 프로그램 샘플이 이제 ESLint를 사용합니다.

모든 확장 프로그램 샘플이 더 이상 사용되지 않는 TSLint 대신 린팅을 위해 ESLint를 사용하도록 업데이트되었습니다. 확장 프로그램이 여전히 TSLint를 사용하고 있다면 TSLint에서 ESLint 마이그레이션 가이드와 새로 업데이트된 확장 프로그램 샘플을 검토하여 ESLint로 마이그레이션하는 방법을 확인할 수 있습니다.

GitHub Triage 확장 프로그램

GitHub에서 담당자, 레이블, 마일스톤 및 트리징을 트리거하는 데 사용하는 다양한 특수 댓글의 단일 퍼지 필터링 가능한 메뉴를 제공하여 GitHub에서 이슈 분류를 지원하는 크로미움 기반 브라우저용 확장 프로그램을 만들었습니다. GitHub Actions. 코드를 GitHub에서 오픈 소스로 공개했습니다.

Screenshot of Extension

문서 및 확장

Build의 Visual Studio Code

VS Code 팀은 Microsoft Build 2020 컨퍼런스에서 발표했으며, VS Code 세션 및 온라인 강연 개요는 이 Build의 VS Code 블로그 게시물에서 확인할 수 있습니다.

VS Code 팀 구성원의 여러 강연

Azure 확장 프로그램

VS Code 내에서 직접 Azure 애셋을 사용하고 배포하기 위한 몇 가지 새로운 확장 프로그램이 있습니다.

  • Azure Static Web Apps - VS Code에서 직접 Azure Static Web Apps를 생성하고 관리합니다.
  • Azure 데이터베이스 - Azure에서 전 세계적으로 분산된 다중 모델 데이터베이스를 생성, 탐색 및 업데이트합니다.

Azure Databases extension

새로운 명령

명령 명령 ID
⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) 편집기 고정 workbench.action.pinEditor
⌘K ⇧Enter (Windows, Linux Ctrl+K Shift+Enter) 편집기 고정 해제 workbench.action.unpinEditor

주요 수정 사항

  • 10144: Linux에서 시스템 UI를 글꼴로 사용
  • 63068: macOS 도크 아이콘이 매우 작음
  • 69163: 사이드바에서 활성 파일 표시 시 예외 발생
  • 95367: 잘못된 frameId에 대해 DAP "evaluate" 요청 발행
  • 95856: Go To Line에 "filename.extension:line number" 형식 포함
  • 96713: 호출 스택 작업 보기에서 세션 중지 시 항상 활성 세션으로 이동
  • 96914: 개요가 표시될 때 입력 지연
  • 96987: Orca는 중단점 보기의 줄 번호를 읽지 않음
  • 97444: 디버그 시계 결과에서 긴 값을 복사하면 부분 값이 붙여넣기됨
  • 97471: 디버그 호버가 너무 좁고 가로 스크롤이 유용하지 않음
  • 97731: 입력 및 스크롤 시 VS Code가 멈춤
  • 96643: 작업(및 TaskExecutions)은 onDid(Start|End)Task 콜백에서 ===이 아님

감사합니다

마지막으로, 이번 달 VS Code에 기여해주신 다음 분들께 진심으로 감사드립니다.

이슈 추적에 대한 기여

vscode 기여

language-server-protocol 기여

vscode-generator-code에 대한 기여

vscode-vsce 기여

debug-adapter-protocol에 기여

vscode-js-debug 기여

  • Vadym Okun (@cbmd): npm만 사용하는 대신 선택한 패키지 관리자로 실행할 수 있는 가능성 추가 PR #459

localization 기여

지난 1년 동안 여러분의 피드백을 주의 깊게 경청했으며, VS Code 현지화 개발에 기여할 수 있는 보다 안정적이고 상호작용적인 플랫폼을 제공하기로 결정했습니다. 이를 염두에 두고 4월 첫째 주에 Microsoft Localization Community Platform(MLCP)을 공식적으로 중단했으며, Microsoft Community Localization Program을 오픈 소스 현지화 프로젝트를 위한 대체 플랫폼에서 계속 진행할 계획입니다.

향후 몇 주 안에 저희 Wiki 페이지에 새 커뮤니티 플랫폼에 대한 발표가 있을 예정이니 계속 지켜봐 주세요. 이 플랫폼 전환에 대한 답변은 FAQ 페이지를 방문하여 확인할 수도 있습니다.

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