2018년 7월 (버전 1.26)
업데이트 1.26.1: 이 업데이트는 다음 이슈들을 해결합니다.
다운로드: Windows: x64 | Mac: Intel | Linux 64비트: deb rpm tarball | 32비트: deb rpm tarball
Visual Studio Code의 2018년 7월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러분이 좋아하실 만한 몇 가지 중요한 업데이트가 포함되어 있습니다. 주요 하이라이트는 다음과 같습니다.
- 브레드크럼 - 브레드크럼 탐색을 통해 작업 공간의 기호와 파일로 바로 이동할 수 있습니다.
- 문제 패널에서 빠른 수정 - 경고 및 오류를 검토하면서 코드 수정을 적용할 수 있습니다.
- Windows 사용자 설치 - Windows 설치 중에 관리자 권한이 더 이상 필요하지 않습니다.
- 터미널 열 선택 - 통합 터미널에서 Alt+클릭으로 텍스트 블록을 선택합니다.
- 누락된 모든 가져오기 빠른 수정 추가 - JavaScript/TypeScript 파일에서 누락된 모든 가져오기를 한 번에 추가합니다.
- JSX 태그 완성 - HTML에서처럼 JavaScript/TypeScript에서 JSX 태그를 작업합니다.
- 향상된 JS/TS 오류 보고 - 관련 소스 코드 링크와 함께 간결하고 명확한 메시지.
- 확장 프로그램 검색 인텔리센스 향상 - 마켓플레이스 쿼리를 필터링하여 원하는 확장 프로그램을 찾습니다.
- 확장 팩 관리 - 확장 팩을 단일 단위로 또는 개별 확장 프로그램별로 관리합니다.
- 미리 보기: 설정 편집기 - 풍부한 설정 설명 표시, "목차" 스크롤 추적.
이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com의 업데이트로 이동하십시오.
또한 클라우드 개발자 옹호자 Brian Clark가 만든 이 1.26 릴리스 하이라이트 동영상을 확인할 수도 있습니다.
릴리스 노트는 VS Code의 주요 영역과 관련된 다음 섹션에 배열됩니다. 몇 가지 추가 업데이트입니다.
- 워크벤치 - 새 보기 메뉴 레이아웃, 상대 경로 복사 작업, 오프라인 모드.
- 통합 터미널 - 향상된 여러 줄 지원, 렌더링 개선.
- 언어 - 명명된 가져오기를 네임스페이스 가져오기로 변환, JSX 접기.
- 디버깅 - 향상된 세션 중지 및 스마트 단계 디버깅.
- 미리 보기 기능 - Windows 및 Linux용 사용자 지정 도구 및 메뉴 모음 테마화.
- 확장 프로그램 작성 - QuickInput API, extensionPack 선언, 웹뷰 제목 표시줄 아이콘.
Insider: 가능한 한 빨리 새로운 기능을 보려면? 야간 빌드인 Insider를 다운로드하고 최신 업데이트를 즉시 사용해 볼 수 있습니다. 최신 Visual Studio Code 뉴스, 업데이트 및 콘텐츠를 보려면 Twitter @code를 팔로우하세요!
워크벤치
브레드크럼
편집기 콘텐츠 위에 탐색 표시줄이 추가되었습니다. 이를 브레드크럼이라고 합니다. 현재 위치를 표시하고 기호 및 파일 간을 빠르게 탐색할 수 있습니다. 브레드크럼을 사용하려면 보기 > 브레드크럼 표시 명령 또는 breadcrumbs.enabled 설정을 통해 활성화하십시오.
편집기 탭(기본값)을 사용하는 경우 브레드크럼은 편집기 제목 아래의 별도 행에 표시됩니다. 편집기 탭을 사용하지 않는 경우 브레드크럼은 제목 옆에 상호 작용 가능한 파일 경로로 표시됩니다.

브레드크럼은 항상 파일 경로를 표시하고, 확장 프로그램의 도움으로 커서 위치까지의 기호 경로를 표시합니다. 표시되는 기호는 개요 보기 및 기호로 이동과 동일하므로 기존 확장 프로그램은 브레드크럼과 함께 작동합니다.
브레드크럼의 모양은 사용자 정의할 수 있습니다. 경로가 매우 길거나 파일 경로 또는 기호 경로만 관심이 있는 경우 breadcrumbs.filePath 및 breadcrumbs.symbolPath 설정을 사용할 수 있습니다. 두 설정 모두 on, off, last를 지원하며 경로의 일부를 볼지 여부를 정의합니다.
브레드크럼과 상호 작용하려면 브레드크럼 포커스 명령을 사용하거나 ⇧⌘. (Windows, Linux Ctrl+Shift+.)을 누르십시오. 마지막 요소를 선택하고 드롭다운을 열어 형제 파일이나 기호로 이동할 수 있습니다. ← (Windows, Linux Left) 및 → (Windows, Linux Right) 키보드 단축키를 사용하여 현재 요소의 앞 또는 뒤 요소로 이동합니다. 드롭다운이 나타나면 입력을 시작하십시오. 일치하는 모든 요소가 강조 표시되고 가장 일치하는 요소가 빠르게 탐색할 수 있도록 선택됩니다.

피커 없이도 브레드크럼과 상호 작용할 수 있습니다. ⇧⌘; (Windows, Linux Ctrl+Shift+;)를 눌러 마지막 요소를 포커스하고, ← (Windows, Linux Left) 및 → (Windows, Linux Right)를 사용하여 이동하고, Space를 사용하여 편집기에서 해당 요소를 표시할 수 있습니다.
문제 패널 빠른 수정
이제 문제 패널에서 빠른 수정을 적용할 수 있습니다. 빠른 수정을 나타내는 전구는 문제 항목에 마우스를 올리거나 선택하면 표시됩니다. 빠른 수정은 전구를 클릭하거나 문제 항목의 컨텍스트 메뉴를 열어 적용할 수 있습니다.

참고: 전구 표시등은 빠른 수정을 제공하는 확장 프로그램이 빠른 수정과 관련된 진단 정보를 제공하는 경우에만 표시됩니다.
Windows 사용자 설치
지난 릴리스에 발표된 Windows용 사용자 설치 패키지를 이제 안정 버전에서 사용할 수 있습니다. 사용자 설치를 설치하는 데 관리자 권한이 필요하지 않습니다. 설치 위치는 사용자의 로컬 AppData(LOCALAPPDATA) 폴더 아래에 있습니다. 사용자 설치는 백그라운드 업데이트 환경도 더 원활하게 제공합니다.
기존에 시스템 전체 Windows 설치를 사용하던 경우, 사용자 설치를 설치하라는 메시지가 표시되며 앞으로 사용자 설치를 사용하는 것이 좋습니다. 걱정하지 마세요. 모든 설정과 확장 프로그램은 전환 중에 유지됩니다. 설치 중에 시스템 전체 설치를 제거하라는 메시지도 표시됩니다.
격자: 최소화된 편집기의 자동 최대화
지난 마일스톤에 격자 편집기 레이아웃을 도입하면서 최소화된 상태인 편집기에 포커스를 맞출 때 자동으로 최대화되는 기능이 사라졌었습니다. 이 기능이 이제 이전처럼 작동합니다.

참고: 보기: 편집기 그룹 최대화 (workbench.action.minimizeOtherEditors)를 통해 언제든지 활성 편집기를 최대화하거나 보기: 편집기 그룹 크기 재설정 (workbench.action.evenEditorWidths)을 통해 모든 편집기 크기를 재설정할 수 있습니다.
보기 메뉴 정리
보기 메뉴가 너무 커져서 정리를 위해 많은 항목을 별도의 모양 하위 메뉴로 옮기기로 결정했습니다.

상대 경로 복사
VS Code는 항상 파일의 절대 경로를 클립보드에 복사하는 작업을 제공했습니다 (⌘K ⌥⌘C (Windows Shift+Alt+C, Linux Ctrl+K Ctrl+Alt+C)). 이제 파일 경로를 작업 공간 폴더 루트에 상대적으로 복사하는 새로운 작업인 상대 경로 복사 (⌘K ⇧⌥⌘C (Windows Ctrl+K Ctrl+Shift+C, Linux Ctrl+K Ctrl+Shift+Alt+C))가 추가되었습니다.
참고: 탭이나 파일 탐색기의 파일 등 컨텍스트 메뉴에서 이 작업에 접근하려면 메뉴를 열기 전에 Shift 키(macOS에서는 Alt 키)를 누른 상태로 있으면 됩니다.
사용자 지정 보기: 파일 리소스 장식
파일 리소스를 표시하는 사용자 지정 보기에서 이제 파일 장식(Git, 문제)이 표시됩니다. 파일 탐색기, 열린 편집기 및 사용자 지정 보기에서 비활성화하려면 explorer.decorations.colors 및 explorer.decorations.badges 설정을 사용하여 비활성화할 수 있습니다.

package.json에서 npm 스크립트 실행
이제 아래 표시된 대로 package.json 파일의 npm 스크립트를 마우스오버하거나 컨텍스트 메뉴에서 실행할 수 있습니다.

폴더 URI 열기
해당 URI에 대한 FileSystemProvider를 제공하는 확장 프로그램이 있는 경우 URI를 VS Code에서 폴더로 열 수 있습니다. 이를 위해 새로운 명령줄 인수 --folder-uri를 도입했습니다.
다음 CLI 명령은 RemoteHub 확장 프로그램을 설치한 경우 VS Code GitHub 리포지토리를 폴더로 엽니다.
code --folder-uri remotehub://github.com/microsoft/vscode

빠른 렌더링
시작 시 기본 워크벤치 레이아웃이 훨씬 더 빠르게 복원됩니다. 복원 순서는 활동 표시줄, 사이드바, 상태 표시줄이고, 헤더 및 아이콘이 표시된 후 탐색기와 편집기 영역이 채워집니다.

빠른 렌더링은 빈 캔버스를 보는 시간을 줄여 인식된 성능을 개선하기 위한 것입니다. 렌더링 성능을 개선하기 위한 아이디어가 더 있으며 여러분의 피드백을 기다립니다.
출력 패널
VS Code의 메인, 창, 공유 프로세스 각각에는 자체 로깅 채널이 있으며, 로그 수준이 "추적"으로 설정된 경우 전송되는 원격 분석 이벤트를 볼 수 있습니다. 간결성을 위해 모든 원격 분석 이벤트에 공통적인 데이터는 여기에 표시되지 않습니다. 각 원격 분석 이벤트의 전체 페이로드는 개발자: 로그 파일 열기... 명령을 통해 액세스할 수 있는 telemetry.log라는 별도의 로그 파일에 기록됩니다.
오프라인 모드
일부 사용자는 온라인 액세스가 필요한 기능을 명시적으로 호출하지 않는 한 VS Code에서 나가는 네트워크 요청을 원하지 않습니다. 이 오프라인 모드를 지원하기 위해 자동 확장 업데이트 확인, A/B 테스트 설정 쿼리, 자동 완성 온라인 데이터 가져오기 등 기능을 끄는 새로운 설정을 추가했습니다.
다음은 네트워크 요청을 수행하는 VS Code 기능을 제어하는 설정 목록입니다.
update.modeupdate.showReleaseNotesextensions.autoupdateextensions.autoCheckUpdatesextensions.showRecommendationsOnlyOnDemandworkbench.settings.enableNaturalLanguageSearchworkbench.enableExperimentstelemetry.enableTelemetrytelemetry.enableCrashReportergit.autofetchnpm.fetchOnlinePackageInfo
접근성 개선 사항
대부분 키보드 탐색, 화면 판독기 지원 및 색상 대비와 관련된 다수의 접근성 문제가 수정되었습니다. 전체 목록은 여기에서 찾을 수 있습니다.
통합 터미널
열 선택
이제 Alt+클릭을 통해 통합 터미널 내에서 열 선택이 지원됩니다.

향상된 여러 줄 지원
터미널에서 단어를 두 번 클릭하면 이제 줄에 걸쳐 나뉜 단어도 선택됩니다.
프론트엔드 및 백엔드 동기화 완료
통합 터미널로 들어오는 데이터 스트림이 이제 백엔드 의사 터미널/셸 프로세스와 동기화됩니다. 즉, 터미널로 들어오는 데이터가 더 이상 UI 스레드를 범람하여 응답하지 않게 만들지 않으며, SIGINT(Ctrl+C)는 항상 응답해야 하고, time 명령은 정확한 결과를 반환해야 합니다.
동적 텍스처 아틀라스
통합 터미널은 이제 캔버스 렌더링에 "동적 텍스처 아틀라스"를 기본값으로 사용합니다. 이는 문자의 글리프를 저장하는 터미널의 캐싱 전략을 변경합니다. 기본 배경의 고정된 글리프 집합이 아니라, 사용되는 배경에 관계없이 글리프가 필요할 때 텍스처 아틀라스에 추가됩니다. 이렇게 하면 첫 번째 터미널 시작 시간과 기본 배경을 사용하지 않는 문자의 렌더링 시간이 단축되고 전반적인 렌더링 성능이 향상될 것입니다.
이것은 xterm.js에 대한 업스트림 커뮤니티 기여로 들어왔습니다.
언어
TypeScript 3.0
VS Code는 이제 TypeScript 3.0.1과 함께 제공됩니다. 이 주요 업데이트는 프로젝트 참조 지원, 튜플에 대한 더 나은 지원 및 기타 언어 및 도구 기능을 제공합니다. TypeScript 3.0에 대한 자세한 내용은 여기에서 읽을 수 있습니다.
향상된 오류 보고
TypeScript 팀은 JavaScript 및 TypeScript 오류 메시지를 더 스마트하고 명확하게 만들기 위해 많은 노력을 기울였습니다. 일부 오류 메시지에는 이제 원본 코드의 관련 위치에 대한 링크가 포함됩니다.

합집합 및 기타 복합 유형에 대한 메시지도 더 간결하고 유용해야 합니다. 예를 들어, JSX의 간단한 유형 오류는 때때로 다음과 같은 복잡한 오류 메시지를 생성할 수 있었습니다.

TypeScript 3.0 덕분에 VS Code 1.26에서는 오류가 훨씬 더 읽기 쉬워졌습니다.

JSX 태그 완성
이제 JavaScript 또는 TypeScript 파일에서 >를 입력하면 JSX 태그가 자동으로 닫힙니다.

이 동작은 VS Code가 HTML 파일에서 이미 제공하는 것과 일치합니다. 태그 자동 닫기는 "javascript.autoClosingTags": false 및 "typescript.autoClosingTags": false를 설정하여 비활성화할 수 있습니다.
누락된 모든 가져오기 빠른 수정 추가
누락된 가져오기 추가 빠른 수정은 이제 JavaScript/TypeScript 파일의 모든 누락된 가져오기에 적용할 수 있습니다.

이 빠른 수정은 단일 정의가 있는 기호에 대한 가져오기만 추가합니다. 현재 프로젝트에 기호의 여러 잠재적 정의가 있는 경우(예: 두 개의 다른 파일에서 Button이라는 기호를 내보내는 경우), 개별 오류를 빠른 수정하고 의도한 특정 가져오기를 선택해야 합니다.
JavaScript 파일에서 이 빠른 수정을 사용하려면 의미론적 검사를 활성화하십시오.
JSX 접기
이제 구문 인식 접기를 사용할 때 JSX 태그를 접을 수 있습니다.

명명된 가져오기와 네임스페이스 가져오기 간 변환
두 가지 새로운 리팩토링을 통해 JavaScript 및 TypeScript에서 명명된 가져오기와 네임스페이스 가져오기 간을 빠르게 변환할 수 있습니다.

jsconfig.json 및 tsconfig.json 프로젝트 파일의 클릭 가능한 링크
Ctrl을 클릭(macOS에서는 Cmd+클릭)하여 jsconfig.json 및 tsconfig.json 프로젝트 참조로 빠르게 이동합니다.

이제 extends 경로도 클릭 가능합니다.
디버깅
향상된 중지 디버그 동작
이전 릴리스에서는 디버그: 중지 작업(디버그 도구 모음에서 찾을 수 있음)이 디버깅 대상 및 해당 자식 프로세스를 즉시 종료하여 디버깅 대상이 정상적으로 정리할 기회를 주지 않았습니다. 일부 사용자는 디버그 세션 중지 후 수동 정리가 강제되었기 때문에 이 동작을 좋아하지 않았습니다.
이번 릴리스에서는 디버그: 중지 작업을 다음과 같이 개선했습니다.
-
중지를 처음 누르면 디버깅 대상이 즉시 종료되지 않고 정상적으로 종료되도록 요청됩니다(필요한 모든 것을 정리함).
-
해당 종료 코드에 중단점(또는 문제)이 없으면 디버깅 대상과 디버그 세션이 종료됩니다. 사용자는 이전 버전의 VS Code와 동작에 차이가 없을 것입니다.
-
그러나 디버거가 종료 코드에서 중단점에 도달하거나 디버깅 대상이 자체적으로 제대로 종료되지 않으면 디버그 세션이 종료되지 않습니다.
-
이 경우 중지 버튼을 다시 누르면 디버깅 대상이 강제로 종료됩니다. 따라서 디버그 세션이 빨간색 중지 버튼을 눌렀을 때 종료되지 않는 것을 보면 버튼을 다시 눌러 디버깅 대상의 강제 종료를 수행하십시오.
참고: 이 기능은 지원하기로 선택한 디버거 확장 프로그램에서만 지원됩니다. 현재는 내장된 Node.js 디버거만 해당됩니다. 곧 다른 디버그 확장 프로그램에서도 이 기능을 지원할 것으로 예상합니다.
Node/Chrome 디버깅에 대한 스마트 단계 동작 변경
이전에는 "smartStep": true를 사용하면 Node.js 디버거가 소스 맵이 없는 소스 코드에서 중단되지 않았습니다. 이는 두 가지 방식으로 발생할 수 있습니다.
- 소스 맵이 전혀 없는 파일(컴파일되지 않은 소스 코드 또는 Node 모듈과 함께 제공되는 .js 파일).
- 소스 맵이 있는 컴파일된 파일이지만 개별 줄이 매핑되지 않은 경우(TypeScript가 일부 기능(예: async/await)을 컴파일할 때 삽입하는 추가 줄).
VS Code 1.26에서는 "smartStep": true가 두 번째 유형, 즉 소스 맵에 누락된 줄에만 영향을 미칩니다. 이제 TS async/await 코드를 건너뛰면서 .js 파일로 단계별 실행할 수 있습니다.
이전 스마트 단계 동작이 너무 공격적이라고 판단하여 이를 변경했습니다. 삽입된 코드를 건너뛰는 것은 일반적으로 올바르지만, 첫 번째 시나리오에서 건너뛰는 것은 일부 프로젝트와 사용자에게만 유용합니다. 또한 launch.json 구성 파일의 skipFiles 옵션을 사용하면 전체 파일의 경우를 더 잘 처리할 수 있습니다. 파일을 더 정확하게 대상 지정하고 더 빠르기 때문입니다.
따라서 smartStep을 사용하고 디버거가 소스 맵이 없는 파일에서 자동으로 건너뛰지 않는 경우 skipFiles를 사용하여 이전 동작을 복원할 수 있습니다. skipFiles를 구성하여 `node_modules`, 내부 Node 파일 또는 단계별 실행하고 싶지 않은 다른 파일을 건너뛰는 방법에 대한 예는 흥미롭지 않은 코드 건너뛰기를 참조하십시오.
확장
확장 프로그램 검색 인텔리센스
이번 릴리스에서는 확장 프로그램 검색 필드에 인텔리센스 자동 완성 기능을 추가하여 확장 프로그램 검색을 더 쉽게 만들었습니다. 이를 통해 범주 및 설치 상태와 같은 항목별로 결과를 필터링하거나 이름, 평점 또는 설치 수를 기준으로 결과를 정렬하는 등 확장 프로그램 검색을 개선할 수 있습니다. '@' 또는 ⌃Space (Windows, Linux Ctrl+Space)를 입력하면 지원되는 쿼리 매개변수에 대한 제안이 트리거됩니다.

확장 팩 관리
이번 릴리스에서는 확장 팩 관리가 훨씬 더 원활해졌습니다. 확장 팩은 항상 단일 팩으로 설치, 제거, 사용 또는 비활성화됩니다. 또한 이제 확장 팩에 속한 확장 프로그램을 전체 확장 팩을 제거하거나 비활성화하지 않고도 제거하거나 비활성화할 수 있습니다.
확장 프로그램 세부 정보를 열 때 번들로 제공되는 확장 프로그램을 보여주는 확장 팩 탭도 새로 추가되었습니다.

참고: 이는 확장 팩의 채택이 필요합니다. 자세한 내용은 확장 팩 다시 보기를 참조하십시오.
명령줄에서 확장 프로그램 비활성화
이제 새로운 인수 --disable-extension을 사용하여 명령줄에서 확장 프로그램을 비활성화할 수 있습니다.
code <folder_path> --disable-extension ms-python.python-ms-python.python확장 프로그램이 비활성화된 상태로 폴더를 엽니다.code <folder_path> --disable-extension ms-python.python --disable-extension ms-dotnettools.csharp-ms-python.python및ms-dotnettools.csharp확장 프로그램이 비활성화된 상태로 폴더를 엽니다.
미리보기 기능
미리보기 기능은 릴리스 준비가 되지 않았지만 사용할 만큼 기능적입니다. 개발 중인 동안 초기 피드백을 환영합니다.
새로운 설정 편집기
이번 마일스톤에서는 설정 편집을 위한 GUI 작업을 계속했습니다. 아직 미리 보기 상태이지만 사용해 보려면 기본 설정: 설정 열기(미리 보기) 명령으로 열 수 있습니다. 피드백을 환영합니다. 이 GitHub 이슈에 피드백을 남겨주시면 됩니다.

지난달에 비해 몇 가지 새로운 변경 사항은 다음과 같습니다.
- 헤더 UX가 새로 고쳐지고 깔끔해졌으며, 수정된 설정만 표시하는 작업과 JSON 편집기를 여는 작업은 오른쪽 상단의
...메뉴 아래로 이동했습니다. - 왼쪽의 목차는 이제 기본적으로 접혀 있으며, 스크롤함에 따라 확장되어 현재 섹션을 표시합니다.
- 설정 설명은 이제 Markdown으로 렌더링됩니다. 일부 설정에는 관련 문서에 대한 외부 링크가 있으며, 다른 설정에 대한 참조는 이제 설정으로 스크롤되는 클릭 가능한 링크입니다. 열거형 유형 설정의
enumDescriptions는 이제 설정 설명 뒤(JSON 편집기에서도)에 표시됩니다.

files.exclude및search.exclude설정에 대한 새 컨트롤을 사용하여 glob 패턴을 더 쉽게 추가하거나 제거하고 현재 범위에 적용되는 패턴을 볼 수 있습니다.

- 설정 편집기의 컨트롤은 이제 테마화할 수 있습니다. 새 테마 색상에서 새 테마 색상을 확인하십시오.
Windows/Linux 사용자 지정 제목 표시줄 및 메뉴
이번 마일스톤에서는 사용자 지정 제목 표시줄이 활성화된 경우 Windows 및 Linux의 사용자 지정 메뉴를 개선했습니다. 아직 미리 보기 상태이지만, settings.json에서 window.titleBarStyle을 custom으로 설정하여 사용해 볼 수 있습니다.
주요 개선 사항은 다음과 같습니다.
-
메뉴는 이제 테마화할 수 있습니다. 새 테마 색상에서 새 테마 색상을 확인하십시오.

-
메뉴와의 키보드 및 마우스 상호 작용이 더 일관성이 있습니다. 이전에는 여러 초점 표시기가 메뉴를 불분명하게 만들었습니다. 이제 메뉴는 훨씬 더 익숙한 방식으로 작동합니다.
-
더 큰 확대/축소 수준을 사용하거나 화면 판독기를 사용하는 사용자를 위해 경험을 개선하기 위해 많은 접근성 문제가 해결되었습니다.
새 메뉴와 제목 표시줄을 계속 개선하고 workbench-title 또는 workbench-menu 레이블이 지정된 이슈를 해결할 것입니다.
확장 프로그램 작성
QuickInput API
QuickPick 및 InputBox API는 이제 안정화되었습니다. 이를 통해 기존 showQuickPick 및 showInputBox API보다 더 유연한 사용자 입력 수집이 가능합니다. 샘플 확장 프로그램에 QuickInput API 사용 샘플이 있습니다.

확장 팩 다시 보기
확장 팩 정의는 이제 package.json에서 extensionDependencies 대신 extensionPack이라는 새 속성을 사용합니다. 이는 extensionDependencies가 주로 확장 프로그램의 제거 또는 비활성화를 방지하는 확장 프로그램 간의 기능적 종속성을 정의하는 데 사용되기 때문입니다.
확장 팩은 번들로 제공되는 확장 프로그램과 기능적 종속성이 없어야 하며 팩과 독립적으로 관리할 수 있어야 합니다. 다음은 여러 디버거 확장 프로그램을 번들로 제공하는 확장 팩을 정의하는 extensionPack 항목의 예입니다.
"extensionPack": [
"andreweinand.mock-debug",
"ms-vscode.mono-debug",
"ms-vscode.cpptools",
"ms-dotnettools.csharp",
"vscjava.vscode-java-debug"
]
이렇게 하면 사용자가 확장 팩과 번들로 제공되는 확장 프로그램을 훨씬 더 간단하고 쉽게 관리할 수 있습니다. 확장 팩 관리를 참조하십시오.
향상된 작업 공간 편집
WorkspaceEdit 및 applyEdit API가 확장 프로그램이 파일을 생성, 이름 변경 및 삭제할 수 있도록 확장되었습니다. 이전에는 텍스트 편집만 가능했습니다. 새로운 API를 통해 클래스 이름이 변경될 때 파일 이름을 바꾸는 등 더 나은 리팩토링이 가능합니다.
새로운 테마 색상
브레드크럼에 대한 새 테마 색상이 있습니다.
breadcrumb.foreground: 브레드크럼 항목의 색상.breadcrumb.focusForeground: 포커스된 브레드크럼 항목의 색상.breadcrumb.activeSelectionForeground: 선택된 브레드크럼 항목의 색상.breadcrumbPicker.background: 브레드크럼 항목 피커의 배경색.
새 설정 편집기의 컨트롤이 이제 테마화됩니다.
settings.headerForeground: 섹션 헤더 또는 활성 제목의 전경색.settings.modifiedItemForeground: 수정된 설정 표시기의 전경색.settings.inactiveSelectedItemBorder: 설정 목록에 포커스가 없을 때 선택된 설정 행 테두리의 색상.settings.dropdownBackground: 드롭다운 배경.settings.dropdownForeground: 드롭다운 전경.settings.dropdownBorder: 드롭다운 테두리.settings.checkboxBackground: 확인란 배경.settings.checkboxForeground: 확인란 전경.settings.checkboxBorder: 확인란 테두리.settings.textInputBackground: 텍스트 입력란 배경.settings.textInputForeground: 텍스트 입력란 전경.settings.textInputBorder: 텍스트 입력란 테두리.settings.numberInputBackground: 숫자 입력란 배경.settings.numberInputForeground: 숫자 입력란 전경.settings.numberInputBorder: 숫자 입력란 테두리.
Windows 및 Linux의 사용자 지정 메뉴가 이제 테마화됩니다.
menu.background: 메뉴 및 컨텍스트 메뉴의 배경.menu.foreground: 메뉴 및 컨텍스트 메뉴의 전경.menu.selectionBackground: 메뉴 및 컨텍스트 메뉴에서 선택된 항목의 배경.menu.selectionForeground: 메뉴 및 컨텍스트 메뉴에서 선택된 항목의 전경.menu.selectionBorder: 메뉴 및 컨텍스트 메뉴에서 선택된 항목의 테두리.menubar.selectionBackground: 메뉴 모음에서 선택된 최상위 메뉴의 배경.menubar.selectionForeground: 메뉴 모음에서 선택된 최상위 메뉴의 전경.menubar.selectionBorder: 메뉴 모음에서 선택된 최상위 메뉴의 테두리.
업데이트된 기본 테마 색상
저희의 접근성 개선의 일환으로, 색상 대비 요구 사항을 충족하기 위해 몇 가지 기본 테마 색상을 업데이트했습니다. 색상 대비 수정 사항에 대한 전체 목록은 여기에서 찾을 수 있습니다.
DefinitionLink
정의 제공자는 이제 DefinitionLink 객체를 반환할 수 있습니다. 정의 링크는 일반 위치 정의보다 더 많은 메타데이터를 제공하며, 정의하는 기호의 범위를 포함합니다.
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
vscode.languages.registerDefinitionProvider('markdown', new LineLinkDefinitionProvider());
}
export class LineLinkDefinitionProvider implements vscode.DefinitionProvider {
async provideDefinition(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken
): Promise<vscode.DefinitionLink[]> {
const wordRange = document.getWordRangeAtPosition(position, /<\d+>/);
if (wordRange.isEmpty) {
return [];
}
const targetLine = +document.getText(wordRange).slice(1, -1);
return [
{
// Definition location
targetRange: new vscode.Range(targetLine - 1, 0, targetLine, 0),
targetUri: document.uri,
// Range of the defining symbol
originSelectionRange: new vscode.Range(
wordRange.start.translate({ characterDelta: 1 }),
wordRange.end.translate({ characterDelta: -1 })
)
}
];
}
}
디버그 확장 프로그램
디버그 어댑터 프로토콜의 새 홈
디버그 어댑터 프로토콜을 이전 위치에서 새 웹사이트 https://microsoft.github.io/debug-adapter-protocol 및 해당 저장소 https://github.com/microsoft/debug-adapter-protocol로 이전했습니다.
동반 블로그 디버그 어댑터 프로토콜의 새 보금자리는 이전의 배경과 추가 정보를 제공합니다.
이전 위치 https://raw.githubusercontent.com/Microsoft/vscode-debugadapter-node/main/debugProtocol.json에서 프로그래밍 방식으로 DAP JSON 스키마를 사용하는 모든 사용자는 새 위치로 소스 코드를 업데이트해야 합니다.
https://microsoft.github.io/debug-adapter-protocol/debugAdapterProtocol.json
다음 두 릴리스(8월 및 9월) 동안에는 이전 위치에 스키마를 최신 상태로 유지하겠지만 10월에 제거할 예정입니다.
디버그 어댑터 프로토콜에 대한 새 terminate 요청
정상적인 디버깅 대상 종료를 지원하기 위해 **디버그 어댑터 프로토콜**에 새로운 terminate 요청과 해당 supportsTerminateRequest 기능이 추가되었습니다. 위에 설명된 대로입니다. 디버그 어댑터가 supportsTerminateRequest 기능에 대해 true를 반환하면, VS Code는 디버그 세션을 중지할 때 먼저 디버그 어댑터에 terminate 요청을 보냅니다. 디버그 어댑터의 terminate 요청 구현은 디버깅 대상이 자체적으로 종료하도록 요청해야 합니다. Unix 기반 운영 체제에서는 디버깅 대상에 SIGINT 신호를 보내 쉽게 수행할 수 있습니다.
웹뷰 아이콘
웹뷰는 이제 탭 표시줄과 열린 편집기 보기에 표시되는 사용자 지정 아이콘을 제공할 수 있습니다.
import * as vscode from 'vscode';
import * as path from 'path';
export function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.commands.registerCommand('catCoding.start', () => {
const panel = vscode.window.createWebviewPanel('catCoding',
"Coding Cat", vscode.ViewColumn.One, { });
panel.iconPath = vscode.Uri.file(path.join(context.extensionPath, 'media', 'cat.png'));
});
}
![]()
터미널 액세스 API
터미널 액세스 API는 이제 안정화되었습니다. 이를 통해 확장 프로그램은 확장 프로그램이 생성했는지 여부에 관계없이 Terminal 객체에 액세스할 수 있습니다.
export namespace window {
export const terminals: ReadonlyArray<Terminal>;
export const onDidOpenTerminal: Event<Terminal>;
}
URI 핸들러 API
URI 핸들러 API는 이제 안정화되었습니다. 이를 통해 확장 프로그램은 시스템 전체 URI를 처리할 수 있습니다.
export interface UriHandler {
handleUri(uri: Uri): ProviderResult<void>;
}
export namespace window {
export function registerUriHandler(handler: UriHandler): Disposable;
}
운영 체제가 자체 URI로 향하는 URI를 열 때마다 확장 프로그램을 활성화하는 onUri 활성화 이벤트가 함께 제공됩니다.
참조 구현은 Git 확장 프로그램의 GitProtocolHandler를 참조하십시오.
Node.js 업데이트
VS Code가 실행되는 Electron 버전이 업데이트되어 Node.js도 함께 업데이트되었습니다. VS Code는 Node.js 7.9에서 8.9로 업데이트되었습니다. 모든 확장 프로그램은 이제 이 최신 버전의 Node.js에서 실행됩니다.
확장 프로그램에 영향을 줄 수 있는 몇 가지 변경 사항이 있습니다.
nativesNode 모듈은 더 이상 작동하지 않습니다(참조: #47569).- 레거시 디버그 프로토콜 및
--debug플래그는 더 이상 지원되지 않습니다(참조: #55907). - stdio를 전송으로 사용하는 Node.js로 작성된 언어 서버가 VS Code 1.26에서 문제를 겪는 경우, LSP 클라이언트 및 서버 라이브러리를 사용하는 확장 프로그램 작성자를 위한 해결책은 전송을
TransportKind.stdio대신TransportKind.ipc로 전환하고 확장 프로그램을 다시 게시하는 것입니다. 클라이언트 및 서버 라이브러리를 사용하는 경우입니다.
제안된 확장 API
각 마일스톤에는 새로운 제안 API가 포함되며 확장 작성자는 이를 시험해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 기다립니다. 제안된 API를 시험해 보려면 다음 단계를 따르세요.
- 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
- 확장의
package.json파일에 이 줄이 있어야 합니다:"enableProposedApi": true. - 최신 버전의 vscode.proposed.d.ts 파일을 프로젝트로 복사하세요.
제안된 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환되지 않는 변경이 발생할 수 있으며 기존 확장에 문제가 발생하는 것을 원하지 않습니다.
TextSearchProvider, FileSearchProvider, FileIndexProvider
확장 프로그램이 VS Code에서 텍스트 검색 및 파일 검색을 구현할 수 있는 API 세트를 추가했습니다.
TextSearchProvider는 사용자가 검색 보기를 사용하거나 확장 프로그램이 새 API workspace.findTextInFiles를 사용할 때 호출됩니다. progress 콜백을 통해 텍스트 일치를 점진적으로 반환합니다.
두 가지 일반적인 사용 사례를 모두 다루는 파일 검색을 구현하는 두 가지 방법이 있습니다. FileIndexProvider 또는 FileSearchProvider입니다. FileIndexProvider는 사용자가 빠른 열기를 열 때 한 번 호출되며 작업 공간의 모든 파일 배열을 반환해야 합니다. VS Code는 이 목록 내에서 검색하고 자체적인 퍼지 매칭 논리를 적용하여 사용자에게 올바른 결과 세트를 반환합니다. 확장 프로그램이 작업 공간의 모든 파일을 제공할 수 있는 경우 FileIndexProvider를 구현하는 것이 파일 검색을 지원하는 더 쉬운 방법입니다.
대신 확장 프로그램이 사용자의 검색 쿼리를 처리하고 필터링된 결과 목록을 반환해야 하는 경우 FileSearchProvider를 구현하십시오. 사용자가 빠른 열기에서 키를 누를 때마다 호출되며 필터링 및 정렬된 파일 일치 세트를 반환해야 합니다.
export interface TextSearchProvider {
provideTextSearchResults(
query: TextSearchQuery,
options: TextSearchOptions,
progress: Progress<TextSearchResult>,
token: CancellationToken
): Thenable<void>;
}
export interface FileIndexProvider {
provideFileIndex(options: FileIndexOptions, token: CancellationToken): Thenable<Uri[]>;
}
export interface FileSearchProvider {
provideFileSearchResults(
query: FileSearchQuery,
options: FileSearchOptions,
token: CancellationToken
): Thenable<Uri[]>;
}
export namespace workspace {
export function registerTextSearchProvider(
scheme: string,
provider: TextSearchProvider
): Disposable;
export function registerFileIndexProvider(
scheme: string,
provider: FileIndexProvider
): Disposable;
export function registerFileSearchProvider(
scheme: string,
provider: FileSearchProvider
): Disposable;
}
findTextInFiles API
확장 프로그램이 작업 공간 내에서 텍스트 패턴을 검색할 수 있도록 새로운 제안 API가 추가되었습니다.
export namespace workspace {
export function findTextInFiles(
query: TextSearchQuery,
options: FindTextInFilesOptions,
callback: (result: TextSearchResult) => void,
token?: CancellationToken
): Thenable<void>;
}
이는 작업 공간에서 파일을 검색하는 workspace.findFiles의 쌍입니다.
기타
Electron 업데이트
이번 릴리스에서는 Electron을 1.7.12에서 2.0.5로 업데이트했습니다. 이로 인해 Chromium 버전이 58에서 61로, Node.js 버전이 7.9에서 8.9로 업데이트되었습니다.
새로운 문서
Logpoints 블로그 게시물
Kenneth의 최근 블로그 게시물을 읽고 Node.js 디버깅 Logpoints와 자동 연결에 대해 알아보세요. Logpoints를 사용하면 소스 코드를 변경하거나 디버깅 세션을 중단하지 않고 빠르게 로깅 정보를 출력할 수 있습니다.
IntelliCode FAQ
Python 개발자라면 인공지능(AI)을 사용하여 소프트웨어 개발을 향상시키는 새로운 도구인 IntelliCode를 살펴보세요. IntelliCode 확장은 현재 소스 코드 컨텍스트를 기반으로 가장 관련성 높은 자동 완성을 추론하는 등 Python의 IntelliSense를 위한 AI 기반 기능 집합을 제공합니다.

주요 변경 사항
- 53532: 편집기: 파일이 이미 로드된 경우 백그라운드에서 파일 변경 사항 로드
- 53586: Node 디버그: 자동 연결 모드가 기억되지 않음
- 53022: 읽기 전용 파일에 대한 편집기 탭의 "읽기 전용" 레이블
- 48275:
resourceIsFile컨텍스트 키 더 이상 지원되지 않음
감사합니다
마지막으로, VS Code를 더욱 발전시키는 데 도움을 준 다음 분들께 진심으로 감사드립니다.
vscode 기여
- @alexr00: #48714 수정: 로컬 파일 대 git 대소문자 변환 추가 PR #49397
- Arjun Attam (@arjun27): 웹뷰 선택 모두 명령 추가 PR #54851
- Adit Bhatt (@avbhatt): 무시된 리포지토리 목록 지원 추가 PR #47890
- @coolreader18: @param jsdoc 태그에 매개변수 이름 뒤에 하이픈이 있는 경우 미리 보기에서 이중 대시 수정 PR #53365
- Geoffrey (@g3offrey): Node.js를 사용하여 require 경로 업데이트 허용 PR #53964
- @HookyQR: 대문자 스네이크 케이스에 대한 단어 부분 이동 및 삭제 개선 PR #53470
- HUA Yang (@imhuay): #53590 수정 PR #54257
- Itamar (@itamark)
- Ivor Huang (@ivorhuang): 푸시 성공 알림 구현 PR #47790
- Josh Beard (@jlbeard84): '터미널에서 열기' 명령에 대한 OS별 텍스트 제거 PR #53636
- Jongkuen Hong (@Jongkeun): 'occuring'을 'occurring'으로 철자 오류 수정 PR #54239
- Josh Goldberg (@JoshuaKGoldberg): 검색 메뉴의 파일 검색 문자열 트리밍 PR #54625
- Leonardo Braga (@LeonardoBraga): 확장 ID 없이 --enable-proposed-api 처리 - "모두 사용"으로 PR #52861
- Loic Nageleisen (@lloeki): 코드 명령 설치 시 소유권 존중 PR #46962
- Nikolas (@nikolasburk): 주변 쌍에 밑줄 및 별표 추가 PR #55054
- Nilesh Kevlani (@njkevlani): #53372 수정 PR #53503
- Nick James (@omniomi): PowerShell 문법 업데이트 PR #52956
- Ori Ashual (@oriash93): CLI에서 확장 업데이트 지원 PR #45533
- Pradeep Murugesan (@pradeepmurugesan)
- Ahmed Tarek (@pushqrdx): SCM 배지 문제 #42940 수정 PR #43256
- Dániel Tar (@qcz): macOptionClickForcesSelection 메시지 개선 PR #54264
- Ryuichi Inagaki (@ryu1kn): 초기 커밋에서 실행 시 "마지막 커밋 실행 취소" 오류 PR #47578
- Sandy Armstrong (@sandyarmstrong): Xamarin .workbook 파일을 markdown으로 취급 PR #51167
- Guillaume Marcoux (@V-ed): wordPartLeft 명령 ID에서 혼란스러운 시작 제거 PR #55492
- Walter M Barajas Jr (@wmb0117): 리포를 수동으로 추가하는 옵션 추가 PR #48020
- Yogesh Mangaj (@yogeshmangaj): 검색 목록 포커스 명령 추가 PR #54196
- @zhuowei: [WIP] git: 스테이징 시 BOTH_ADDED 파일의 충돌 시장 감지 PR #50252
language-server-protocol 기여
- Luke Lau (@Bubba): Text Document Client Capabilities에 hierarchicalDocumentSymbolSupport 추가 PR #538
- Qiming zhao (@chemzqm): coc.nvim 추가 PR #537
- Colin Rofls (@cmyr): specification.md의 오타 수정 PR #499
- @khng300: C/C++/Objective-C에 대한 LSP 구현으로 ccls 추가 PR #525
- Michael T Lombardi (@michaeltlombardi): Puppet Language Server 정보 업데이트 PR #509
- Mikhail Arkhipov (@MikhailArkhipov): CompletionItem에 preselect 필드 추가 PR #515
- Andrey Kolomoets (@muffinmad): eglot 추가 PR #531
- Olivier FAURE (@PoignardAzur): 사양의 사소한 오타 수정 PR #529
- Rafał Łasocha (@swistak35): servers.md 업데이트 - 새 Ruby 언어 서버 추가 PR #535
- Tyson Andre (@TysonAndre)
vscode-chrome-debug 기여
- Michael Crane (@mrcrane): Windows에서 Chrome을 연결 해제 시 종료할 때 경쟁 조건 PR #703
- Todd Chaffee (@tchaffee): webpack devtools 옵션에 대한 명확한 문서화 PR #694
vscode-chrome-debug-core 기여
- @digeff
- @Pokute: URI 인코딩된 소스 맵 지원 + 테스트 추가 PR #344
- Raghav Katyal (@rakatyal)
vscode-vsce 기여
- Jimi (Dimitris) Charalampidis (@JimiC): .vscodeignore의 패턴 일치 수정 PR #271
vscode-recipes에 기여
- Fabien Allanic (@fallanic)
- Jesus Abarca (@jabas06): Angular CLI 6 버전과 함께 디버깅이 작동하도록 업데이트 PR #117
- @NileshParkhe83: Jest 문제 - SecurityError: localStorage는 불투명한 출처에서 사용할 수 없습니다. PR #120
- @NiloCK: #96 vue-cli 2.x / 3.x 지침 구분 PR #121
localization 기여
Transifex VS Code 프로젝트 팀에는 800명 이상의 회원이 있으며 매월 약 100명의 활성 기여자가 있습니다. 새로운 번역 제공, 번역 투표 또는 프로세스 개선 제안 등 여러분의 기여에 감사드립니다.
다음은 이번 릴리스의 기여자 스냅샷입니다. 프로젝트에 대한 자세한 내용은 기여자 이름 목록을 포함하여 프로젝트 사이트인 https://aka.ms/vscodeloc를 방문하십시오.
- 중국어(간체): Joel Yang, Yusong, pluwen, Liu Dingming 刘丁明, hackereric, Simon Chan, 韦煊 王, gzponline, Ziming Wang.
- 중국어(번체): Duran Hsieh, Will 保哥, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin, MartinLau, Ben Tsai 蔡和恩, Alan Liu.
- 프랑스어: Antoine Griffard, Ludovic P, William Thibodeau, Adrien Clerbois, Alain BUFERNE.
- 독일어: Carsten Siemens, Carsten Kneip, Markus Hatvan, Väinämö Lumikero, Ettore Atalan, AlCalzone, Levin Rickert.
- 이탈리아어: Alessandro Alpi, Andrea Dottor, Emilie Rollandin, Riccardo Cappello, Aldo Donetti, Massimo.
- 일본어: Satoshi Kajiura, Yuichi Nukiyama, Shunya Tajima, yoshioms, Nakamura Yuta.
- 한국어: Helloyunho.
- 러시아어: Michel Ace.
- 스페인어: Alberto Poblacion, Julián Martínez, Alejandro Medina, José M. Aguilar, Carlos Mendible, Pedro Sanchez, Lio Fleishman.
- 보스니아어: Bahrudin Hrnjica.
- 불가리아어: Любомир Василев.
- 체코어: Ľuboš Uličný, Ľubomír Kováč, Frantisek Veris.
- 네덜란드어: Gerald Versluis, RubenJacobse, Armand Duijn, Dirk Doesburg, Maarten van Stam, Dean Wyns.
- 영어(영국): Matthew John Cheetham, Swotboy2000.
- 핀란드어: Feetu Nyrhinen, Petri Niinimäki, Make.
- 그리스어: Ioannis Paraskevopoulos, Theodore Tsirpanis.
- 헝가리어: Dóczi Dominik.
- 인도네시아어: Laurensius Dede Suhardiman, Wildan Mubarok, Riwut Libinuko, Bagus Ilman, Lundy Orlando.
- 노르웨이어: andreona, Daniel Bjørnbakk.
- 폴란드어: Patryk Brejdak, Sebastian Baran, Igor Śpiączka, Lukasz Woznicki.
- 포르투갈어(브라질): Lucas Miranda, Otacilio Saraiva Maia Neto, Roberto Fonseca, Marcelo Camargo, Marcelo Novaes, Victor Hugo Schmidt, Pedro Sereno, Rafael Oliveira, Danilo Dantas, Vitor Dutra Freire, Luan Moreno Medeiros Maciel, Fabio Correia.
- 포르투갈어(포르투갈): Daniel Correia, Pavlo Zakharuk, António Santos, João Mata, Diogo Barros, Danilo Dantas.
- 루마니아어: Schiriac Robert, Cornel Cocioaba, Dan Ichim, Alexandru Spinu, ovisan, Bogdan Mateescu.
- 타밀어: Jeyanthinath Muthuram, Jam Station.
- 우크라이나어: Oleksandr, Fedir Gordiienko, Volodymyr Holovka.