2018년 6월 (버전 1.25)
업데이트 1.25.1: 이 업데이트는 다음 이슈를 해결합니다.
다운로드: Windows: x64 | Mac: Intel | Linux 64비트: deb rpm tarball | 32비트: deb rpm tarball
Visual Studio Code의 2018년 6월 릴리스에 오신 것을 환영합니다. 지난달 미리보기로 발표되었던 여러 기능들이 안정 버전으로 전환되었습니다. 주요 기능 하이라이트는 다음과 같습니다.
- 격자 편집기 레이아웃 - 사용자 지정 가로 및 세로 편집기 레이아웃.
- 개요 보기 - 문서의 기호 트리 개요 및 탐색.
- 이동식 모드 - USB 플래시 드라이브 또는 파일 공유에서 VS Code 설정을 실행하거나 복사합니다.
- 호버 표시 옵션 - 호버 정보의 모양을 제어합니다.
- 하위 단어 탐색 - camelCase 단어 내에서 빠르게 탐색합니다.
- 플로팅 디버그 도구 모음 - 편집기 탭을 숨기지 않고 디버그 도구 모음을 항상 표시합니다.
- 확장 프로그램 보기 개선 사항 - 사용 설정됨, 사용 중지됨, 추천 확장 프로그램을 쉽게 확인합니다.
- 미리보기: 설정 편집기 - 이제 설정을 구성하기 위한 "목차"가 포함되어 있습니다.
- 언어 서버 프로토콜 검사기 - 확장 프로그램 작성자는 LSP 프로토콜 트래픽을 시각화할 수 있습니다.
- 새로운 Python Flask 튜토리얼 - VS Code를 사용하여 Python Flask 웹 애플리케이션을 만들고 디버그합니다.
이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com의 업데이트로 이동하십시오.
또한 Cloud Developer Advocate Brian Clark가 만든 이 1.25 릴리스 하이라이트 동영상을 확인할 수 있습니다.
릴리스 노트는 VS Code의 주요 영역과 관련된 다음 섹션에 배열됩니다. 몇 가지 추가 업데이트입니다.
- 워크벤치 - 빈 탐색기에 파일 및 폴더 끌어다 놓기, 통일된 기록 탐색.
- 편집기 - 스마트 제안 선택, 스니펫 자리 표시자 변환.
- 언어 - 폴더 이름 변경 시 JS/TS 가져오기 업데이트, CSS 의사 선택자 및 요소.
- 미리보기 기능 - Windows 사용자 설정, Windows 및 Linux용 사용자 지정 도구 및 메뉴 모음.
- 확장 프로그램 작성 - 격자 편집기 레이아웃 기여, 완료 항목 사전 선택.
- 새 명령 - 새로운 격자 편집기 레이아웃 명령 및 키보드 단축키.
Insider: 가능한 한 빨리 새로운 기능을 보려면? 야간 빌드인 Insider를 다운로드하고 최신 업데이트를 즉시 사용해 볼 수 있습니다. 최신 Visual Studio Code 뉴스, 업데이트 및 콘텐츠를 보려면 Twitter @code를 팔로우하세요!
워크벤치
격자 편집기 레이아웃
이제 편집기를 세로 및 가로로 배치할 수 있으며, 3개 이상의 편집기를 나란히 놓을 수 있습니다.

유연한 레이아웃을 지원하기 위해 빈 편집기 그룹을 만들 수 있습니다. 기본적으로 편집기 그룹의 마지막 편집기를 닫으면 그룹도 함께 닫히지만, 새로운 설정 workbench.editor.closeEmptyGroups: false로 이 동작을 변경할 수 있습니다.

새로운 보기 > 편집기 레이아웃 메뉴에 미리 정의된 편집기 레이아웃 세트가 있습니다.

편집기 도구 모음의 편집기 분할 작업을 클릭하여 옆으로 여는 편집기는 기본적으로 활성 편집기의 오른쪽에 열립니다. 활성 편집기 아래에 편집기를 열도록 선호하는 경우, 새로운 설정 workbench.editor.openSideBySideDirection: down을 구성하십시오.
키보드만으로 편집기 레이아웃을 조정하는 새 명령이 많이 있지만, 마우스를 사용하는 것을 선호하는 경우 끌어서 놓는 것이 모든 방향으로 편집기를 빠르게 분할하는 방법입니다.

편집기 그룹이 이제 무제한이며 다양한 방식으로 배열될 수 있으므로, 열린 편집기 보기에서는 더 이상 편집기 그룹을 왼쪽, 중앙 또는 오른쪽으로 레이블링하지 않습니다. 대신, 편집기 그룹은 생성 시간에 따라 번호가 매겨져 레이블링됩니다. 마지막으로 생성된 편집기 그룹은 항상 열린 편집기 목록의 마지막에 위치합니다. 레이아웃에서 편집기 그룹을 이동할 때 목록 변경을 최소화하는 좋은 모델이라고 생각했습니다.

확장 프로그램 및 테마에 미치는 영향에 대해서는 확장 프로그램 작성 섹션을 참조하고, 새로운 격자 편집기 레이아웃 명령 목록은 새 명령을 참조하십시오.
전문가 팁: 편집기를 분할하는 도구 모음 작업을 마우스로 가리킨 상태에서
Alt키를 누르고 있으면 반대쪽 방향으로 분할할 것인지 묻습니다. 이는 오른쪽 또는 아래쪽으로 빠르게 분할하는 방법입니다.

격자 레이아웃 작업으로 인해 중앙 편집기 레이아웃의 동작 방식이 변경되었습니다.
- 이제 중앙 편집기 레이아웃 내에 모든 편집기 레이아웃을 열 수 있습니다. 따라서 사용자에게 더 많은 유연성을 제공합니다.
- 중앙 편집기 레이아웃은 더 이상 레이아웃에 따라 자동으로 활성화 및 비활성화되지 않습니다. 때때로 혼란스럽고 예상치 못한 동작으로 이어졌기 때문입니다.
개요 보기
개요 보기가 미리보기에서 벗어나 이제 기본적으로 활성화되었습니다. 파일 탐색기 하단에 별도의 섹션이 있습니다. 확장하면 현재 활성 편집기의 기호 트리를 표시합니다.
개요 보기에는 다른 정렬 기준 모드, 선택적 커서 추적 기능이 있으며 일반적인 열기 제스처를 지원합니다. 또한 입력란이 포함되어 있어 입력 시 기호를 찾거나 필터링할 수 있습니다. 오류 및 경고도 개요 보기에 표시되어 문제 위치를 한눈에 볼 수 있습니다.

개요 보기 설정을 통해 아이콘 렌더링을 활성화/비활성화하고 오류 및 경고 표시를 제어할 수 있습니다(모두 기본적으로 활성화됨).
outline.icons- 아이콘으로 개요 요소 렌더링을 전환합니다.outline.problems.enabled- 개요 요소에 오류 및 경고를 표시합니다.outline.problems.badges- 오류 및 경고에 배지를 사용할지 여부를 전환합니다.outline.problems.colors- 오류 및 경고에 색상을 사용할지 여부를 전환합니다.
확장 프로그램 작성자를 위한 새 API도 있습니다.
이동식 모드
VS Code는 이제 이동식 모드를 지원하며, VS Code가 생성하고 유지 관리하는 모든 데이터가 설치 위치 근처에 있습니다. 이를 통해 USB 드라이브 또는 파일 공유를 통해 VS Code 설정을 환경 간에 쉽게 이동할 수 있습니다. 이동식 모드는 Windows 및 Linux용 ZIP 다운로드뿐만 아니라 macOS용 일반 애플리케이션 다운로드에서도 지원됩니다. 자세한 내용은 여기를 클릭하십시오.
빈 파일 탐색기에 파일 및 폴더 끌어다 놓기
이제 빈 탐색기에 파일, 폴더, VS Code 작업 영역 파일을 끌어다 놓아 열 수 있습니다.

기록 탐색
VS Code 전반에 걸쳐 입력 기록 탐색이 더 자연스럽고 일관성 있게 되었습니다. UpArrow(history.showPrevious) 및 DownArrow(history.showNext) 키를 사용하여 검색 및 문제 보기의 입력란과 편집기, 터미널, 웹 보기의 찾기 위젯을 탐색할 수 있습니다.
간단하고 일관성을 위해 입력란 간 탐색의 기본 키 바인딩을 UpArrow 및 DownArrow에서 각각 Ctrl+UpArrow(macOS에서는 Cmd+UpArrow) 및 Ctrl+DownArrow(macOS에서는 Cmd+DownArrow) 키로 변경했습니다. ⌘↑ (Windows, Linux Ctrl+Up), ⌘↓ (Windows, Linux Ctrl+Down) 및 ⌘↑ (Windows, Linux Ctrl+Up) 키 바인딩을 업데이트하여 이전 동작으로 돌아갈 수 있습니다.
참고: 또한 기존 18개의 기록 탐색 명령을 제거하고 history.showPrevious 및 history.showNext의 두 명령으로 통합했습니다.
편집기
호버 표시 옵션
일부 사용자는 편집기 텍스트를 덮어쓰는 호버 제안이 없는 것을 선호하며, 편집기 호버는 이제 세 가지 추가 설정을 통해 사용자 지정할 수 있습니다. editor.hover.enabled를 사용하여 편집기 호버를 전환하고, editor.hover.delay를 사용하여 호버가 표시될 때까지의 시간을 사용자 지정하고, editor.hover.sticky를 사용하여 마우스를 호버 위로 이동했을 때 호버가 계속 표시되는지 여부를 변경하십시오.
하위 단어 지원
하위 단어 탐색 및 삭제를 위한 새 명령이 있습니다. 이 명령은 camelCase 위치와 밑줄(_)에서 중지됩니다.

바인딩 방법을 보여주는 예시입니다.
{ "key": "ctrl+alt+right", "command": "cursorWordPartRight",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+right", "command": "cursorWordPartRightSelect",
"when": "textInputFocus" },
{ "key": "ctrl+alt+left", "command": "cursorWordPartStartLeft",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+left", "command": "cursorWordPartStartLeftSelect",
"when": "textInputFocus" },
{ "key": "ctrl+alt+backspace", "command": "deleteWordPartLeft",
"when": "textInputFocus && !editorReadonly" },
{ "key": "ctrl+shift+alt+backspace", "command": "deleteWordPartRight",
"when": "textInputFocus && !editorReadonly" },
제안 선택
언어 IntelliSense 제공자는 종종 어떤 제안이 가장 좋은지 알고 있으며, 이 버전의 VS Code에서는 제안을 미리 선택할 수 있습니다. 미리 선택된 제안을 위한 새로운 API가 있으며, 사용 가능한 경우 편집기는 목록의 첫 번째 제안 대신 해당 제안을 선택합니다.

스니펫 자리 표시자 변환
스니펫이 드디어 자리 표시자 변환을 지원합니다. 자리 표시자 변환은 변수 변환과 유사하지만 더 동적입니다. 변환은 다른 자리 표시자로 전환할 때 적용되며, 형식 규칙은 다음과 같습니다: ${숫자/정규식/포맷 문자열/옵션}.
다음은 "Hello World"를 독일어 대응어로 바꾸는 샘플입니다.
"HelloWorld": {
"prefix": "say_hello",
"body": "${1} ${2} -> ${1/Hello/Hallo/} ${2/World/Welt/}"
}

변환의 전체 잠재력을 활용하는 방법에 대한 자세한 내용은 스니펫 문법을 참조하십시오.
통합 터미널
성능 개선
통합 터미널의 파서는 ANSI 호환성을 높이고 들어오는 데이터를 처리하는 속도를 약 30% 향상시키기 위해 처음부터 다시 작성되었습니다. 이는 xterm.js에 대한 업스트림 커뮤니티 기여로 이루어졌습니다.
굵은 텍스트 밝은 색상 설정
터미널은 현재 모든 굵은 텍스트를 밝은 색상 변형을 사용하도록 변환합니다. 이는 터미널 에뮬레이터 간에 약간 일관성이 없으며 주로 레거시 이유로 인해 존재합니다. 이제 이 자동 변환을 비활성화하여 굵은 텍스트에 밝지 않은 색상을 사용할 수 있습니다.
{
"terminal.integrated.drawBoldTextInBrightColors": false
}
이것은 xterm.js에 대한 업스트림 커뮤니티 기여로 이루어졌습니다.
디버깅
플로팅 디버그 도구 모음
이전 마일스톤에서는 디버그 도구 모음을 디버그 보기에 도킹하는 새로운 설정("debug.toolBarLocation": "docked")을 도입했습니다. 이번 마일스톤에서는 사용자 피드백을 검토하고 플로팅 도구 모음의 동작도 개선하려고 시도했습니다("debug.toolBarLocation": "floating").
피드백에서 나온 일치된 의견은 도구 모음이 항상 표시되어야 하고(어떤 보기가 활성인지와 무관하게), 편집기 탭과 같이 아무것도 숨기지 않아야 한다는 것이었습니다. 따라서 플로팅 도구 모음을 편집기 영역으로 끌어서 놓을 수 있도록 "묶음을 풀었습니다". 이는 편집기 탭을 많이 사용하지만 디버그 도구 모음을 항상 보고 싶은 사용자에게 도움이 될 것입니다.

기존 debug.hideActionBar 설정은 debug.toolBarLocation 설정의 "hidden" 값으로 처리되므로, 이제 debug.hideActionBar를 제거합니다.
언어
TypeScript 2.9.2
VS Code는 이제 TypeScript 2.9.2를 제공합니다. 이 마이너 릴리스는 여러 버그를 수정하고 안정성을 개선했습니다. 변경 사항 전체 내용은 여기에서 읽을 수 있습니다.
폴더 이름 변경 시 가져오기 경로 업데이트
지난 릴리스에서는 JavaScript 또는 TypeScript 파일을 이동하거나 이름을 바꿀 때 자동 가져오기 경로 업데이트 기능을 제공했습니다. 이 기능은 이제 디렉토리를 이동하거나 이름을 바꿀 때도 작동합니다. 다시 말하지만, 기본적으로 VS Code는 경로를 업데이트할 수 있는지 묻습니다. javascript.updateImportsOnFileMove.enabled 및 typescript.updateImportsOnFileMove.enabled 설정을 통해 묻는 동작을 제어할 수 있습니다.
유효한 값은 다음과 같습니다.
"prompt"- 기본값. 경로를 업데이트할지 묻습니다."always"- 항상 경로를 자동으로 업데이트합니다."never"- 경로를 자동으로 업데이트하지 않고 묻지도 않습니다.
계층적 Markdown 문서 기호
내장 Markdown 지원은 새로운 DocumentSymbol API를 사용하여 Markdown 헤더가 개요 보기에 올바르게 중첩되도록 합니다.

MDN의 새로운 CSS 의사 선택자 및 의사 요소
4월 릴리스에서 최신 CSS/SCSS/Less 지원을 위해 Mozilla Developer Network에서 데이터를 가져오기 시작했습니다. 이번 릴리스에서는 다음 의사 선택자/요소를 추가했습니다.
:defined | :dir | :focus-visible | :focus-within | :placeholder-shown::-moz-range-progress | ::-moz-range-thumb | ::-moz-range-track | ::-webkit-progress-inner-value | ::grammar-error | ::placeholder

브라우저 호환성 데이터 정확도 향상
mdn/browser-compat-data 덕분에 MDN의 이 섹션을 CSS/SCSS/Less 완료 기능으로 가져왔습니다.

justify-items 속성은 CSS Grid Layout의 많은 다른 CSS 속성과 함께 Edge 버전 16부터 지원되었습니다. MDN 데이터를 소싱함으로써 VS Code는 CSS 기능에 대한 브라우저 호환성 데이터를 최신 상태로 유지합니다.
알 수 없는 At-Rule의 우아한 처리
CSS 사전 처리기를 사용하는 사람들은 빌드 시 유효한 CSS로 컴파일되는 사용자 지정 at-rule을 사용할 수 있습니다. 이전에는 VS Code가 이러한 at-rule을 구문 분석하거나 처리할 수 없었습니다. 이번 릴리스에서는 at-rule에 대한 지원이 개선되어 다음과 같은 기능을 제공합니다.
- CSS 구문을 계속 따르므로 올바른 구문 강조 표시를 받습니다.
- 더 이상 잘못된 위치에 오류가 생성되지 않습니다.
css.lint.unknownAtRules로 제어할 수 있는 올바른 오류를 생성합니다.

확장
확장 프로그램 보기의 새 기본 보기
지금까지 확장 프로그램 보기의 기본 보기에는 설치됨 확장 프로그램 섹션과 추천 확장 프로그램 섹션이 포함되어 있었습니다. 사용 설정된 확장 프로그램과 함께 설치되었지만 사용 중지된 확장 프로그램이 존재하면 후자와 상호 작용하기 어려웠습니다. 이제 사용 설정됨 확장 프로그램이 먼저 표시되고, 그 뒤에 추천 확장 프로그램 섹션, 그리고 맨 아래에 접힌 사용 중지됨 확장 프로그램 섹션이 있는 새로운 기본값을 제공합니다.

확장 프로그램 보기의 컨텍스트 메뉴를 사용하여 이러한 섹션을 항상 다시 정렬, 접기/확장 또는 숨길 수 있습니다. 보기 메뉴의 보기 열기... 명령을 사용하여 이러한 섹션을 표시/숨길 수도 있습니다.

확장 프로그램 추천 무시
열린 파일과 작업 영역 환경을 기반으로 확장 프로그램을 추천합니다. 모든 추천이 프로젝트에 적합하지는 않을 수 있다는 것을 이해하며, 이제 특정 추천을 무시할 수 있습니다.
추천을 무시하려면 확장 프로그램 항목을 클릭하여 세부 정보 창을 열고 추천 무시 버튼을 누릅니다. 무시된 추천은 더 이상 추천되지 않습니다.

작업 영역 추천 관리
extensions.json 파일을 사용하여 작업 영역 사용자에게 추천될 확장 프로그램 세트를 구성할 수 있었습니다. 이러한 추천을 관리하는 것이 훨씬 쉬워졌습니다. 확장 프로그램 보기에서 아무 확장 프로그램이나 클릭하여 세부 정보 창을 엽니다. 그런 다음 아래의 새 명령을 사용하여 추천을 추가하거나 작업 영역 사용자에게 추천하고 싶지 않은 특정 확장 프로그램을 거부할 수 있습니다.
- 확장 프로그램: 추천 확장 프로그램에 추가 (작업 영역)
- 확장 프로그램: 추천 확장 프로그램에 추가 (작업 영역 폴더)
- 확장 프로그램: 추천 확장 프로그램 무시 (작업 영역)
- 확장 프로그램: 추천 확장 프로그램 무시 (작업 영역 폴더)
언어 팩
VS Code는 이제 영어만 표시 언어로 제공하며, 다른 언어는 VS Code Marketplace에서 설치 가능한 언어 팩에 의존합니다. VS Code 버전 1.23 또는 1.24에서 언어 팩을 설치하라는 메시지가 표시되었을 때 설치했다면 이 변경 사항을 눈치채지 못할 것입니다. 이전 버전의 VS Code에서 업그레이드하거나 새로 설치하는 경우, 운영 체제의 UI 언어에 대한 언어 팩을 설치하라는 메시지가 표시됩니다. 추가 언어 팩은 확장 프로그램 보기(⇧⌘X (Windows, Linux Ctrl+Shift+X))를 사용하여 Marketplace에서 설치할 수 있습니다.
요약하자면
- VS Code 버전 1.22 이하에서 1.25로 업데이트하는 경우, 표시 언어는 영어이며 VS Code는 운영 체제의 UI 언어에 대한 언어 팩을 설치하라는 메시지를 표시합니다. 해당 언어 팩이 Marketplace에 있는 경우.
- 1.23 또는 1.24에서 1.25로 업데이트한 경우, UI 언어에 대한 언어 팩을 설치하라는 메시지가 이미 표시되었을 것입니다. 설치했다면 1.25는 정상적으로 시작되며 표시 언어는 선택한 UI 언어로 표시됩니다. 언어 팩을 설치하지 않았다면 설치하라는 메시지가 표시됩니다.
- VS Code 버전 1.25 이상으로 새로 설치하면, 해당 언어 팩이 Marketplace에 있는 경우 설치하라는 메시지가 표시됩니다.
미리보기 기능
미리보기 기능은 릴리스 준비가 되지 않았지만 사용할 만큼 기능적입니다. 개발 중인 동안 초기 피드백을 환영합니다.
새 설정 편집기
이번 마일스톤에서는 설정 편집 GUI 작업을 계속했습니다. 아직 미리보기 상태이지만 사용해 보려면 환경 설정: 설정 열기(미리보기) 명령으로 열 수 있습니다. 피드백을 보내주시면 감사하겠습니다. 이 GitHub 이슈에 남겨주세요.

지난달 대비 새로운 변경 사항 중 일부는 다음과 같습니다.
- 설정을 새 카테고리로 구성하는 "목차"(TOC).
- 정리되고 새로 고쳐진 설정 행 레이아웃.
- "다시 설정" 버튼이 제거되었습니다. 설정을 기본값으로 편집하면
settings.json에서 제거됩니다.
또한, 설정을 검색하는 동안 "목차"에 대한 세 가지 다른 옵션(show, hide, filter)을 보기 위해 "workbench.settings.settingsSearchTocBehavior" 설정을 사용해 보고 어떤 옵션을 선호하는지 알려주십시오.
Windows 사용자 설정
Windows 사용자는 이제 관리자 권한 없이 설치할 수 있는 새로운 미리보기 설치 패키지를 사용할 수 있습니다. 이 설치 패키지는 더 원활한 백그라운드 업데이트 경험을 제공합니다. 이 기능은 현재 Insiders에서만 사용할 수 있으며, 안정 버전 사용자에게 최고의 경험을 제공하기 위해 7월 동안 더 많은 피드백을 받고자 합니다.
Insider 사용자 설정 패키지의 다운로드 링크는 다음과 같습니다.
Windows/Linux용 사용자 지정 제목 표시줄 및 메뉴
Windows 및 Linux 사용자는 이제 window.titleBarStyle 설정 값을 custom으로 사용할 수 있으며, 이에 맞게 새로운 메뉴 표시줄을 구현했습니다. 이 설정은 아직 기본적으로 활성화되어 있지 않지만 window.titleBarStyle 설정을 통해 켤 수 있습니다.
Windows 및 Linux에서 이 설정을 활성화하면 이전 메뉴 표시줄이 라이트 또는 다크 테마에 맞는 새 메뉴 표시줄로 대체됩니다. 새 메뉴 표시줄에는 위쪽 수준의 화살표 키 탐색과 같은 몇 가지 개선 사항도 포함됩니다. 마지막으로, 제품 전반의 메뉴가 새 메뉴 표시줄과 일치하게 됩니다.

workbench-title 또는 workbench-menu 레이블이 붙은 이슈를 해결하는 동시에 새 메뉴와 제목 표시줄을 계속 개선할 것입니다.
터미널: 동적 텍스처 아틀라스
터미널 캔버스에 대한 새로운 "동적 텍스처 아틀라스"를 활성화하기 위한 실험적 설정이 추가되었습니다. 이는 터미널이 문자 글리프를 저장하는 캐싱 전략을 변경합니다. 기본 배경에 고정된 글리프 집합 대신, 글리프는 필요한 대로 텍스처 아틀라스에 추가되며 어떤 배경을 사용하든 상관없이 추가됩니다. 이는 첫 터미널 시작 시간을 줄이고, 기본 배경을 사용하지 않는 문자의 렌더링 시간을 줄이며, 전반적인 렌더링 성능을 향상시켜야 합니다.
이것은 결국 기본이 될 것이며, 현재는 다음 설정으로 옵트인할 수 있습니다.
{
"terminal.integrated.experimentalTextureCachingStrategy": "dynamic"
}
이것은 xterm.js에 대한 업스트림 커뮤니티 기여로 이루어졌습니다.
확장 프로그램 작성
격자 편집기 레이아웃: ViewColumn
새 격자 편집기 레이아웃 기능을 지원하기 위한 API 조정은 몇 가지뿐입니다. 가장 주목할 만한 것은 활성 편집기 옆에 편집기를 열 때 사용할 수 있는 새로운 ViewColumn.Beside 작업입니다. 격자 편집기 레이아웃에서는 더 이상 열린 편집기의 수에 제한이 없으므로, 해당 옵션을 사용하면 옆에 이미 공간이 있는 경우를 제외하고는 항상 활성 편집기 옆에 새 편집기를 생성합니다. 사용자 설정 workbench.editor.openSideBySideDirection에 따라 오른쪽 또는 아래쪽에 열릴 수 있습니다.
텍스트 편집기 및 웹뷰의 ViewColumn 값은 아래와 같이 편집기 영역에서의 나타나는 순서대로 계속 진행됩니다.

ViewColumn 열거형이 ViewColumn.Nine까지 확장되었더라도, TextEditor는 격자 안에 있는 한 항상 보기 열 번호가 할당됩니다.
편집기 그룹이 이동되거나 편집기 그룹이 닫힐 때, 이전과 같이 onDidChangeTextEditorViewColumn 이벤트가 발생합니다.
격자 편집기 레이아웃: 새 명령
격자 편집기 레이아웃을 지원하기 위한 API 변경은 최소한이지만, 확장 프로그램은 추가된 새로운 명령을 활용하여 격자 편집기 레이아웃을 계속 사용할 수 있습니다(전체 개요는 새 명령 섹션 참조).
새로운 vscode.setEditorLayout는 단일 명령과 인수를 사용하여 전체 편집기 레이아웃을 변경할 수 있다는 점에서 약간의 설명이 필요합니다. 레이아웃은 초기(선택 사항) 방향(0 = 가로, 1 = 세로)과 내부 편집기 그룹 배열을 가진 객체로 설명됩니다. 각 편집기 그룹은 크기와 직교로 배열될 편집기 그룹 배열을 가질 수 있습니다. 편집기 그룹 크기가 제공되면, 합은 행 또는 열당 적용하기 위해 1이어야 합니다.
2x2 격자에 대한 예시
{
"orientation": 0,
"groups": [
{ "groups": [{}, {}], "size": 0.5 },
{ "groups": [{}, {}], "size": 0.5 }
]
}
기본적으로 활성 ViewColumn에서 열리는 편집기
텍스트 편집기 또는 웹뷰를 열 때 ViewColumn이 제공되지 않으면, VS Code는 이제 ViewColumn.One에서 여는 대신 현재 활성 편집기 그룹에 기본적으로 엽니다. 이전 동작을 유지하려면 열 때 ViewColumn.One을 전달하기만 하면 됩니다.
미리 선택된 완료 항목
완료 항목을 제공하는 확장 프로그램은 이제 이를 '미리 선택됨'으로 표시할 수 있습니다. 이는 많은 완료 항목이 있지만 일부를 선택할 가능성이 더 높을 때 유용합니다. 예를 들어 사용자가 알려진 변수 유형을 할당할 때입니다. 이 기능은 확장 프로그램이 더 일반적으로 사용되는 완료 항목을 선택하도록 하여, console.dirxml보다 console.log를 선호하게 합니다.
API 추가는 'CompletionItem#preselect: boolean'이며, 미리 선택된 항목이 많을 경우 가장 높은 순위를 가진 항목이 선택됩니다.
문서 기호
새로운 개요 보기 트리를 최대한 활용하려면 확장 프로그램은 DocumentSymbolProviders를 수정하여 DocumentSymbols를 반환해야 합니다. 이는 개요 트리의 요구에 맞춰진 새로운 유형입니다. 문서 기호 계층을 나타내는 것을 지원하며 기호를 정의하는 범위와 기호를 식별하는 선택 범위를 구별할 수 있습니다.
+--/**
| * Some Comment
<range>--| */
| export function fooFunction() {
| +----------+
+--} |
|
<selection range>
읽기 전용 파일 시스템 공급자
파일 시스템 공급자는 이제 readonly로 등록될 수 있습니다. VS Code는 이 플래그를 존중하여 해당 파일 시스템 공급자에서 오는 리소스에 대한 모든 변경 명령을 비활성화합니다. 또한 읽기 전용 리소스에 대한 편집기는 읽기 전용 모드로 열립니다.
사용자 지정 보기
트리 보기 가시성
TreeView에 새로 추가된 다음 속성과 이벤트를 사용하여 트리 보기가 보이는지 여부를 확인할 수 있습니다.
/**
* `true` if the [tree view](#_TreeView) is visible otherwise `false`.
*/
readonly visible: boolean;
/**
* Event that is fired when [visibility](TreeView.visible) has changed
*/
readonly onDidChangeVisibility: Event<TreeViewVisibilityChangeEvent>;
/**
* The event that is fired when there is a change in [tree view's visibility](#_TreeView.visible)
*/
export interface TreeViewVisibilityChangeEvent {
/**
* `true` if the [tree view](#_TreeView) is visible otherwise `false`.
*/
readonly visible: boolean;
}
선택 리스너
트리 보기에 선택 변경 이벤트를 수신하는 새로운 선택 변경 이벤트가 추가되었습니다.
/**
* Event that is fired when the [selection](#_TreeView.selection) has changed
*/
readonly onDidChangeSelection: Event<TreeViewSelectionChangeEvent<T>>;
/**
* The event that is fired when there is a change in [tree view's selection](#_TreeView.selection)
*/
export interface TreeViewSelectionChangeEvent<T> {
/**
* Selected elements.
*/
readonly selection: T[];
}
표시 및 포커스
reveal API를 호출할 때 포커스 옵션을 true로 설정하여 트리 보기에서 요소를 표시하고 포커스를 맞출 수 있습니다.
reveal(element: T, options?: { select?: boolean, focus?: boolean }): Thenable<void>;
새 테마 색상
격자 편집기 레이아웃 지원 작업을 통해 나온 빈 편집기 그룹의 배경색에 대한 두 가지 새로운 테마 색상이 있습니다.
editorGroup.emptyBackground: 빈 편집기 그룹의 배경색.editorGroup.focusedEmptyBorder: 포커스된 빈 편집기 그룹의 테두리 색상.

editorPane.background: 중앙 편집기 레이아웃의 왼쪽 및 오른쪽에 보이는 편집기 창 배경색.

사용 중단된 테마 색상
격자 편집기 레이아웃 기능 도입으로 editorGroup.background 테마 색상은 더 이상 지원되지 않습니다.
이름 바꾸기 명령
이름 바꾸기 명령(editor.action.rename)은 이제 Uri 및 Position으로 호출할 수 있으며 편집기는 해당대로 이름 바꾸기 작업을 시작합니다. 예를 들어.
vscode.commands.executeCommand('editor.action.rename', [
vscode.Uri.file('/my/file.abc'),
new vscode.Position(14, 7)
]);
진단 태그
진단 태그를 사용하면 확장 프로그램에서 진단에 대한 추가 메타데이터를 첨부할 수 있습니다. VS Code는 이 메타데이터를 사용하여 진단이 렌더링되는 방식을 조정합니다.
const diag = new vscode.Diagnostic(new Range(0, 0, 0, 10), 'Unused');
diag.tags = [vscode.Diagnostic.Unnecessary];
DiagnosticTag.Unnecessary는 진단이 참조되지 않거나 도달할 수 없는 소스 코드에 대한 것임을 나타냅니다. DiagnosticTag.Unnecessary로 표시된 모든 소스 코드는 흐리게 렌더링됩니다. 흐리게 표시되는 정도는 "editorUnnecessaryCode.opacity" 테마 색상으로 제어됩니다. 예를 들어 "editorUnnecessaryCode.opacity": "#000000c0"는 75% 투명도로 코드를 렌더링합니다. 고대비 테마의 경우 "editorUnnecessaryCode.border" 테마 색상을 사용하여 흐리게 처리하는 대신 불필요한 코드를 밑줄로 표시합니다.
WebviewPanel.active 및 WebviewPanel.visible
웹뷰 패널에는 두 개의 새로운 읽기 전용 속성이 있습니다.
active- 패널이 포커스되었는지 추적합니다.visible- 패널이 화면에 보이는지 추적합니다.
웹뷰 지속성
웹뷰 API는 웹뷰 상태를 저장하고 복원하는 지원을 포함하도록 확장되었습니다.
웹뷰 컨텍스트 내부의 getState 및 setState API를 사용하면 웹뷰가 상태를 저장하고 웹뷰 자체가 백그라운드 탭으로 들어갈 때도 유지되는 상태 객체를 얻을 수 있습니다.
// Inside a webview's JavaScript
const vscode = acquireVsCodeApi();
// Look up old state (will be undefined if no state is set)
const oldState = vscode.getState();
// Update the persisted state.
// You can save off any json serializable object.
if (oldState) {
vscode.setState({ count: oldState.count + 1 });
} else {
vscode.setState({ count: 1 });
}
또한 확장 프로그램은 WebviewPanelSerializer를 등록할 수 있으며, 이를 통해 지정된 유형의 웹뷰가 VS Code 다시 시작 시에도 유지될 수 있습니다. 이를 활성화하려면 확장 프로그램은 활성화 메서드에서 vscode.window.registerWebviewPanelSerializer를 호출해야 합니다.
export function activate(context: vscode.ExtensionContext) {
...
vscode.window.registerWebviewPanelSerializer('myWebviewType', {
async deserializeWebviewPanel(webviewPanel: vscode.WebviewPanel, state: any) {
// `state` is the state persisted using `setState` inside the webview
console.log(`Got state: ${state}`);
new MyWebview(webviewPanel);
}
});
}
확장 프로그램은 onWebviewPanel 활성화 이벤트도 추가해야 합니다.
"activationEvents": [
...,
"onWebviewPanel:catCoding"
]
새로운 웹뷰 지속성 API는 웹뷰 확장 작성 페이지에서 문서화되어 있습니다. 예제 웹뷰 확장에서도 이 새로운 API를 사용하는 방법을 보여줍니다.
언어 팩: 최소 번역
VS Code는 이제 언어 팩의 언어로 사용 가능한 언어 팩을 사용자에게 요청할 것입니다. 아래는 중국어 간체 및 영어로 중국어 간체 언어 팩을 추천하는 예입니다.

이 표시를 위해서는 언어 팩 작성자가 자신의 언어 팩에서 다음의 최소 번역 문자열을 번역해야 합니다.
{
showLanguagePackExtensions: localize('showLanguagePackExtensions', "Search language packs in the Marketplace to change the display language to {0}."),
searchMarketplace: localize('searchMarketplace', "Search Marketplace"),
installAndRestartMessage: localize('installAndRestartMessage', "Install language pack to change the display language to {0}."),
installAndRestart: localize('installAndRestart', "Install and Restart")
}
언어 서버 프로토콜 검사기
[langId].trace.server 설정을 통해 vscode-languageclient를 사용하는 언어 서버는 로깅 지원을 받을 수 있습니다. 생성된 로그는 VS Code와 언어 서버 간의 LSP 통신을 이해하는 데 유용하지만, 로그가 길고 유용한 정보를 추출하기 어려울 수 있습니다.
새로운 LSP 검사기로 이제 LSP 로그를 이해하는 데 도움이 되는 도구를 사용할 수 있습니다: https://microsoft.github.io/language-server-protocol/inspector/
검사기에서 다음을 수행할 수 있습니다.
- 언어 클라이언트와 서버 간의 요청, 응답 및 알림을 스캔합니다.
- 검색 또는 사전 정의된 필터를 사용하여 로그를 필터링하여 유용한 정보를 찾습니다.

검사기는 언어 확장을 디버깅하는 데 유용할 수 있습니다. 사용자에게 버그 보고서에 LSP 로그를 첨부하도록 요청하고 검사기를 사용하여 로그를 분석할 수 있습니다.
언어 서버 가이드가 로깅 지원 및 LSP 검사기 기능에 대한 섹션을 포함하도록 업데이트되었습니다.
언어 서버: 엔드투엔드 테스트
언어 서버 가이드에 엔드투엔드 테스트 섹션이 추가되었습니다.
언어 서버 구성 요소의 단위 테스트에 비해, 엔드투엔드 테스트는 VS Code에서 워크스페이스를 열고, 확장 호스트에서 언어 확장을 시작하며, 언어 확장의 실제 동작에 대해 어설션을 수행합니다. 이를 통해 워크스페이스와 VS Code 상태를 쉽게 모의하고 실제 VS Code 동작을 확인할 수 있습니다.
언어 서버: 가이드 개편
언어 서버 가이드가 개편되었습니다. 주요 개선 사항은 다음과 같습니다.
- 위에서 언급한 로깅 및 테스트 섹션.
- 언어 서버 프로토콜, 언어 서버 및 그 관계에 대한 설명.
- LSP 및 언어 서버의 업데이트된 그림.
- lsp-sample 샘플 코드 업데이트.
- LSP 웹사이트에 대한 더 많은 참조.
제안된 확장 API
각 마일스톤에는 새로운 제안 API가 포함되며 확장 작성자는 이를 시험해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 기다립니다. 제안된 API를 시험해 보려면 다음 단계를 따르세요.
- 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
- 확장의
package.json파일에 이 줄이 있어야 합니다:"enableProposedApi": true. - 최신 버전의 vscode.proposed.d.ts 파일을 프로젝트로 복사하세요.
제안된 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환되지 않는 변경이 발생할 수 있으며 기존 확장에 문제가 발생하는 것을 원하지 않습니다.
WorkspaceEdit은 파일을 생성/이름 변경/삭제할 수 있습니다.
WorkspaceEdit을 확장하여 파일 또는 폴더를 생성, 이름 변경 및 삭제하는 데 사용할 수 있는 제안 API를 추가했습니다. 이는 복잡한 리팩토링(예: 유형 이름을 변경할 때 파일 이름 변경)에 유용하지만 다른 시나리오도 가능하게 할 것입니다.
로컬 이름 변경 이벤트
이름 변경이 발생하기 전후에 발생하는 두 가지 이벤트를 제안합니다. onWillRenameFile 및 onDidRenameFile이라고 하며, 확장이 이름 변경에 반응하거나 참여할 수 있도록 합니다.
QuickInput API
새로운 QuickPick 및 InputBox API를 사용하면 기존 showQuickPick 및 showInputBox API보다 유연하게 사용자 입력을 수집할 수 있습니다. 새 API를 사용하면 입력 개체의 새 인스턴스를 만들고 해당 인스턴스에서 사용 사례에 따라 이벤트 처리기를 등록하고 속성을 설정합니다.
export namespace window {
export function createQuickPick<T extends QuickPickItem>(): QuickPick<T>;
export function createInputBox(): InputBox;
}
QuickPick API 사용 예시는 샘플 확장에서 볼 수 있습니다.
다단계 입력 샘플

기존 showQuickPick 및 showInputBox API가 충분히 유연하지 않다면, 새로운 QuickPick 및 InputBox API를 사용하세요. 그렇지 않으면 기존 API를 계속 사용하면 더 빠르게 작업을 완료할 수 있습니다.
피드백 및 토론은 이슈 #53327을 사용하십시오.
터미널 렌더러
터미널 "렌더러" 개념을 제안합니다. 터미널 렌더러는 기본적으로 터미널 패널 내의 터미널 인스턴스이지만 백킹 프로세스는 없습니다. 대신 **확장**이 프로세스 역할을 합니다. 이는 VS Code 내에서 터미널 멀티플렉서를 구현하는 데 유용하며, 확장은 프로세스의 입출력 파이프에 액세스할 수 있고, 이는 터미널 렌더러에 연결됩니다. Live Share 확장은 공유 터미널 지원의 안정성과 유지 관리성을 개선하기 위해 이 새로운 API를 사용할 계획입니다.
export namespace window {
export function createTerminalRenderer(name: string): TerminalRenderer;
}
export interface TerminalRenderer {
name: string;
dimensions: TerminalDimensions | undefined;
readonly maximumDimensions: TerminalDimensions | undefined;
readonly terminal: Terminal;
readonly onDidAcceptInput: Event<string>;
readonly onDidChangeMaximumDimensions: Event<TerminalDimensions>;
write(text: string): void;
}
export interface TerminalDimensions {
readonly columns: number;
readonly rows: number;
}
또 다른 사용 예시는 확장이 자체 REPL을 만드는 것입니다. 이는 확장이 모든 키 입력을 수신하고 Enter 키를 눌렀을 때 작동하는 방식으로 작동합니다.
const shell = vscode.window.createTerminalRenderer('My Extension REPL');
shell.write('Type and press enter to echo the text\r\n\r\n');
shell.terminal.show();
let line = '';
shell.onDidAcceptInput(data => {
if (data === '\r') {
shell.write(`\r\necho: "${line}"\r\n\n`);
line = '';
} else {
line += data;
shell.write(data);
}
});
활성 터미널 추적
통합 터미널을 위한 새로운 확장 API를 제안하여 window.activeTextEditor 및 window.onDidChangeActiveTextEditor와 유사하게 활성 터미널을 추적할 수 있도록 합니다.
export namespace
export const activeTerminal: Terminal | undefined;
export const onDidChangeActiveTerminal: Event<Terminal | undefined>;
}
Terminal.onData 이름 변경
Terminal.onData는 API 명명 규칙에 따라 onDidWriteData로 이름이 변경되었습니다.
export interface Terminal {
onDidWriteData: Event<string>;
}
DefinitionLink
정의 링크를 통해 정의 제공자는 정의와 함께 추가 메타데이터를 반환할 수 있습니다.
export interface DefinitionLink {
/**
* Span of the symbol being defined in the source file.
*
* Used as the underlined span for mouse definition hover. Defaults to the word range at
* the definition position.
*/
origin?: Range;
/**
* The resource identifier of the definition.
*/
uri: Uri;
/**
* The full range of the definition.
*
* For a class definition for example, this would be the entire body of the class definition.
*/
range: Range;
/**
* The span of the symbol definition.
*
* For a class definition, this would be the class name itself in the class definition.
*/
selectionRange?: Range;
}
이 추가 정보는 VS Code에서 **정의로 이동** 작업의 사용자 경험을 개선하는 데 사용됩니다.
DefinitionLink를 사용하려면 DefinitionProvider는 현재 provideDefinition2 메서드를 구현해야 합니다. DefinitionLink API가 안정화되면 provideDefinition2를 제거하고 일반 DefinitionProvider.provideDefinition 메서드를 업데이트하여 DefinitionLink도 반환할 수 있도록 할 계획입니다.
새로운 명령
| 키 | 명령 | 명령 ID |
|---|---|---|
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | openSideBySideDirection을 통해 구성된 수직 방향으로 편집기를 분할합니다. |
workbench.action.splitEditorOrthogonal |
| 활성 편집기 그룹의 열린 편집기를 표시합니다. | workbench.action.showEditorsInActiveGroup |
|
| ⌃⌘9 (Windows, Linux Shift+Alt+9) | 활성 편집기를 마지막 편집기 그룹으로 이동합니다. | workbench.action.moveEditorToLastGroup |
| ⌘K ↑ (Windows, Linux Ctrl+K Up) | 활성 편집기 그룹을 위로 이동합니다. | workbench.action.moveActiveEditorGroupUp |
| ⌘K ↓ (Windows, Linux Ctrl+K Down) | 활성 편집기 그룹을 아래로 이동합니다. | workbench.action.moveActiveEditorGroupDown |
| 마지막 편집기 그룹에 초점을 맞춥니다. | workbench.action.focusLastEditorGroup |
|
| 첫 번째 편집기 그룹에 초점을 맞춥니다. | workbench.action.firstEditorInGroup |
|
| ⌘W (Windows Ctrl+F4, Linux Ctrl+W) | 활성 편집기 그룹을 닫습니다 (열린 편집기는 이웃 그룹으로 병합됩니다). | workbench.action.closeGroup |
| 모든 편집기 그룹을 닫습니다. | workbench.action.closeAllEditorGroups |
|
| 활성 편집기 그룹 및 해당 편집기를 닫습니다. | workbench.action.closeEditorsAndGroup |
|
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | 활성 편집기를 위로 분할합니다. | workbench.action.splitEditorUp |
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | 활성 편집기를 아래로 분할합니다. | workbench.action.splitEditorDown |
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | 활성 편집기를 왼쪽으로 분할합니다. | workbench.action.splitEditorLeft |
| ⌘K ⌘\ (Windows, Linux Ctrl+K Ctrl+\) | 활성 편집기를 오른쪽으로 분할합니다. | workbench.action.splitEditorRight |
| 모든 편집기 그룹의 편집기를 활성 편집기 그룹으로 병합합니다. | workbench.action.joinAllGroups |
|
| ⌘4 (Windows, Linux Ctrl+4) | 네 번째 편집기 그룹에 초점을 맞춥니다 (필요한 경우 새 편집기 그룹을 생성합니다). | workbench.action.focusFourthEditorGroup |
| ⌘5 (Windows, Linux Ctrl+5) | 다섯 번째 편집기 그룹에 초점을 맞춥니다 (필요한 경우 새 편집기 그룹을 생성합니다). | workbench.action.focusFifthEditorGroup |
| ⌘6 (Windows, Linux Ctrl+6) | 여섯 번째 편집기 그룹에 초점을 맞춥니다 (필요한 경우 새 편집기 그룹을 생성합니다). | workbench.action.focusSixthEditorGroup |
| ⌘7 (Windows, Linux Ctrl+7) | 일곱 번째 편집기 그룹에 초점을 맞춥니다 (필요한 경우 새 편집기 그룹을 생성합니다). | workbench.action.focusSeventhEditorGroup |
| ⌘8 (Windows, Linux Ctrl+8) | 여덟 번째 편집기 그룹에 초점을 맞춥니다 (필요한 경우 새 편집기 그룹을 생성합니다). | workbench.action.focusEighthEditorGroup |
| 활성 편집기를 왼쪽 편집기 그룹으로 이동합니다. | workbench.action.moveEditorToLeftGroup |
|
| 활성 편집기를 오른쪽 편집기 그룹으로 이동합니다. | workbench.action.moveEditorToRightGroup |
|
| 활성 편집기를 위쪽 편집기 그룹으로 이동합니다. | workbench.action.moveEditorToAboveGroup |
|
| 활성 편집기를 아래쪽 편집기 그룹으로 이동합니다. | workbench.action.moveEditorToBelowGroup |
|
| ⌘K ⌘← (Windows, Linux Ctrl+K Ctrl+Left) | 왼쪽 편집기 그룹에 초점을 맞춥니다. | workbench.action.focusLeftGroup |
| ⌘K ⌘→ (Windows, Linux Ctrl+K Ctrl+Right) | 오른쪽 편집기 그룹에 초점을 맞춥니다. | workbench.action.focusRightGroup |
| ⌘K ⌘↑ (Windows, Linux Ctrl+K Ctrl+Up) | 위쪽 편집기 그룹에 초점을 맞춥니다. | workbench.action.focusAboveGroup |
| ⌘K ⌘↓ (Windows, Linux Ctrl+K Ctrl+Down) | 아래쪽 편집기 그룹에 초점을 맞춥니다. | workbench.action.focusBelowGroup |
| 왼쪽에 새 편집기 그룹을 만듭니다. | workbench.action.newEditorGroupLeft |
|
| 오른쪽에 새 편집기 그룹을 만듭니다. | workbench.action.newEditorGroupRight |
|
| 위에 새 편집기 그룹을 만듭니다. | workbench.action.newEditorGroupAbove |
|
| 아래에 새 편집기 그룹을 만듭니다. | workbench.action.newEditorGroupBelow |
|
| 편집기 레이아웃 전환: 단일 | workbench.action.editorLayoutSingle |
|
| 편집기 레이아웃 전환: 두 개의 열 | workbench.action.editorLayoutTwoColumns |
|
| 편집기 레이아웃 전환: 세 개의 열 | workbench.action.editorLayoutThreeColumns |
|
| 편집기 레이아웃 전환: 두 개의 행 | workbench.action.editorLayoutTwoRows |
|
| 편집기 레이아웃 전환: 세 개의 행 | workbench.action.editorLayoutThreeRows |
|
| 편집기 레이아웃 전환: 2x2 그리드 | workbench.action.editorLayoutTwoByTwoGrid |
|
| 편집기 레이아웃 전환: 두 개의 열 (하단) | workbench.action.editorLayoutTwoColumnsBottom |
|
| 편집기 레이아웃 전환: 두 개의 열 (오른쪽) | workbench.action.editorLayoutTwoColumnsRight |
|
| 편집기 레이아웃 전환: 중앙 | workbench.action.editorLayoutCentered |
새로운 layoutEditorGroups 명령
layoutEditorGroups 명령을 사용하면 편집기 그룹 레이아웃을 만들고 키 바인딩을 할당할 수 있습니다. 레이아웃은 초기 (선택 사항) 방향 (0 = 가로, 1 = 세로)과 내부에 편집기 그룹 배열이 있는 객체로 설명됩니다. 각 편집기 그룹은 크기와 수직 방향으로 배치될 편집기 그룹 배열을 가질 수 있습니다. 편집기 그룹 크기가 제공되면 합계는 행 또는 열마다 적용되기 위해 1이어야 합니다. 예시:
{
"key": "Ctrl+0",
"command": "layoutEditorGroups",
"args": {
"orientation": 1,
"groups": [{ "size": 0.2 }, { "size": 0.6 }, { "size": 0.2, "groups": [{}, {}] }]
}
}
다음 레이아웃이 생성됩니다.

제거된 명령
| 명령 ID | 대체 |
|---|---|
workbench.action.showEditorsInFirstGroup |
대신 showEditorsInActiveGroup을 사용하십시오. |
workbench.action.showEditorsInSecondGroup |
대신 showEditorsInActiveGroup을 사용하십시오. |
workbench.action.showEditorsInThirdGroup |
대신 showEditorsInActiveGroup을 사용하십시오. |
workbench.action.moveEditorToSecondGroup |
대신 workbench.action.moveEditor* 명령을 사용하십시오. |
workbench.action.moveEditorToThirdGroup |
대신 workbench.action.moveEditor* 명령을 사용하십시오. |
workbench.action.openLastEditorInGroup |
대신 lastEditorInGroup을 사용하십시오. |
workbench.action.openFolderAsWorkspaceInNewWindow |
대신 duplicateWorkspaceInNewWindow를 사용하십시오. |
editor.debug.action.toggleColumnBreakpoint |
대신 toggleInlineBreakpoint를 사용하십시오. |
기록 탐색 명령
| 명령 ID | 대체 |
|---|---|
search.history.showPrevious |
대신 history.showPrevious를 사용하십시오. |
search.history.showNext |
대신 history.showNext를 사용하십시오. |
search.replaceHistory.showPrevious |
대신 history.showPrevious를 사용하십시오. |
search.replaceHistory.showNext |
대신 history.showNext를 사용하십시오. |
search.history.showPreviousIncludePattern |
대신 history.showPrevious를 사용하십시오. |
search.history.showNextIncludePattern |
대신 history.showNext를 사용하십시오. |
search.history.showPreviousExcludePattern |
대신 history.showPrevious를 사용하십시오. |
search.history.showNextExcludePattern |
대신 history.showNext를 사용하십시오. |
find.history.showPrevious |
대신 history.showPrevious를 사용하십시오. |
find.history.showNext |
대신 history.showNext를 사용하십시오. |
workbench.action.terminal.findWidget.history.showPrevious |
대신 history.showPrevious를 사용하십시오. |
workbench.action.terminal.findWidget.history.showNext |
대신 history.showNext를 사용하십시오. |
editor.action.extensioneditor.showPreviousFindTerm |
대신 history.showPrevious를 사용하십시오. |
editor.action.extensioneditor.showNextFindTerm |
대신 history.showNext를 사용하십시오. |
editor.action.webvieweditor.showPreviousFindTerm |
대신 history.showPrevious를 사용하십시오. |
editor.action.webvieweditor.showNextFindTerm |
대신 history.showNext를 사용하십시오. |
repl.action.historyPrevious |
대신 history.showPrevious를 사용하십시오. |
repl.action.historyNext |
대신 history.showNext를 사용하십시오. |
새로운 문서
새로운 Python Flask 튜토리얼
Visual Studio Code에서 Flask를 사용하는 방법에 대한 새로운 Visual Studio Code에서 Flask 사용하기 튜토리얼이 있습니다. 이 튜토리얼에서는 VS Code에서 Python Flask 웹 애플리케이션을 빠르게 생성, 편집 및 디버깅하는 방법을 보여줍니다.
웹사이트 배포 튜토리얼 업데이트
Azure에 정적 웹사이트 배포 튜토리얼을 업데이트하여 Azure Storage를 사용하여 정적 웹사이트를 생성하고 배포하는 방법을 보여줍니다. Azure Storage 확장에서 제공하는 새로운 기능을 사용하면 웹사이트 배포가 간소화됩니다.
주요 변경 사항
- 35361: macOS High Sierra에서 네이티브 창 탭 기능 제한
- 40158: 다중 세션 사례에 대한 중단점 확인 UI 수정
- 42726: 파일 열기: 절대 경로가 제공된 경우 공백이 포함된 이름의 파일을 열 수 없음
- 49591: 도구 모음의 편집기 작업으로 "모두 닫기" 버튼 추가
- 51200: Linux의 프로세스 모니터가 잘못된 프로세스 로드를 표시합니다.
- 51440: 가운데 마우스 버튼으로 알림 닫기 허용
감사합니다
마지막으로, VS Code를 더욱 발전시키는 데 도움을 준 다음 분들께 진심으로 감사드립니다.
vscode 기여
- bitshiftza (@bitshiftza): 이슈 #39458에 대한 수정 PR #52506
- @brentwang23: 이슈 #46203에 대한 단어 부분 이동 및 삭제 구현 PR #48023
- Howard Chen (@chenhowa): git.pullFrom 및 git.pushTo를 await하여 오류가 표시되도록 보장… PR #49167
- Cherry Wang (@chryw): Markdown 및 일반 도구 모음 아이콘 일관성 검사 PR #50484
- @CoenraadS: highlightActiveIndentGuide #49148에 대한 설정 추가 PR #49298
- Daniel Frankcom (@danielfrankcom): 배경 ANSI 색상 코드 추가 PR #49764
- Darius Keeley (@Dari-K): #51533 수정 PR #52075
- David (@ddruker): [GIT EXTENSION] 인덱스에 추가된 파일에 대한 사용자 지정 전경색 추가 PR #46066
- EbXpJ6bp (@EbXpJ6bp): 확장 편집기에서 종속성 및 기여 UI 개선 PR #52126
- Schuyler Cebulskie (@Gawdl3y): 정보 대화 상자에 V8 버전 추가 및 보기 좋게 만들기 PR #51511
- 삭제된 사용자 (@ghost): [수정] _hue2rgb에 누락된 반환 유형 추가 PR #51285
- Jing Zhou (@gnijuohz): git 커밋 입력 상자에 공백만 포함된 경우 경고 표시 PR #45254
- Christoph Seitz (@go2sh): 플레이스홀더에 대한 변환 추가 PR #51621
- Jan Pilzer (@Hirse): gitignore 언어 추가 PR #51026
- Ian Sanders (@iansan5653): 드롭 가능한 항목을 확인하여 열린 편집기에서 드래그 오버 시 강조 표시 제한 PR #52623
- James (@jwhitmarsh): text/ng-template 유형의 스크립트 태그 내에서 emmet 작업 허용 PR #51849
- Catalin Pirvu (@katakonst): git에 여러 프로젝트가 포함될 때 메시지 필드에서 포커스 복원 PR #46068
- Krzysztof Cieślak (@Krzysztof-Cieslak): incrementFileName에서
1.txt형식 지원 추가 PR #50869 - Leonardo Braga (@LeonardoBraga)
- Jon Malmaud (@malmaud): 확장 문서 오타 수정 PR #51509
- Momoto, Seiji (@momoto): main.contribution.ts 오타 수정 PR #52104
- Nahom Abi (@NahomAgidew): #43625 수정: 푸시 시 동기화 아이콘 스핀 PR #52146
- Ori Ashual (@oriash93): 터미널 재사용 경고 표시 여부 옵션 추가 PR #44461
- Eugen Cazacu (@oygen87): 주석 삭제 PR #50971
- Dániel Tar (@qcz)
- Ronald Rey (@reyronald): 확장 뷰렛에 "추천" 작업 추가 PR #50419
- @rianadon: [WIP] Windows용 컬러 제목 표시줄 PR #39972
- ryenus (@ryenus): 기본 확장 뷰의 뷰렛 사용자 지정 허용 PR #47766
- Shizeng Zhou (@shizengzhou): 테두리 제거. #48765 수정 PR #48825
- Benjamin Smith (@SirHoneyBiscuit): 업데이트 시 릴리스 노트 표시/숨기기 옵션 추가 #44020 PR #44271
- Alfonso Perez (@alfonsoperez): 열 1에서 deleteAllLeft를 트리거할 때 줄을 계속 삭제합니다 PR #28392
- Spencer (@spalger): 열 1에서 실행될 때 DeleteAllLeft 수정 PR #40876
- Benjamin Crawford (@subylan): 32비트 빌드의 경우 max_old_space_size 플래그가 범위를 벗어납니다. PR #52792
- Tomáš Hübelbauer (@TomasHubelbauer)
- @vemoo: "특정 작업 다시 시작에 키 바인딩 생성 불가" 수정 PR #36474
- Winner Crespo (@wistcc): 토큰화가 건너뛰어질 때 경고 추가 PR #51265
- @zhuowei: #35361 수정: macOS 10.13의 네이티브 탭 수정 PR #52775
vscode-vsce 기여
- Jimi (Dimitris) Charalampidis (@JimiC): 'npm version'을 사용하여 게시하는 기능 추가 PR #263
- Kevin Cunnane (@kevcunnane): package 명령에서 Yarn 사용 지원 PR #260
- Ritwick Dey (@ritwickdey): 확장 게시 시 useYarn 매개변수 PR #268
language-server-protocol 기여
- Colin Rofls (@cmyr): specification.md에서 오타 수정 PR #499
- Samarth Wahal (@LordZamy): spec 오타 수정 PR #508
vscode-node-debug 기여
- jramsay (@jramsay): VS Live Share용 로드된 스크립트 활성화 PR #180
vscode-chrome-debug-core 기여
- @digeff: 새 스크립트 및 변경된 스크립트에 대한 가능한 경쟁 조건 수정 PR #336
- Johannes Ewald (@jhnns): internalSourceBreakpoint에서 안전하지 않은 배열 액세스 수정 PR #335
vscode-chrome-debug 기여
- Chance An (@changsi-an)
- Michael Crane (@mrcrane)
- 모든 시작 사례에서 Chrome PID 설정 PR #687
localization 기여
Transifex VS Code 프로젝트 팀에는 800명 이상의 회원이 있으며 매월 약 100명의 활성 기여자가 있습니다. 새로운 번역 제공, 번역 투표 또는 프로세스 개선 제안 등 여러분의 기여에 감사드립니다.
다음은 이번 릴리스의 기여자 스냅샷입니다. 프로젝트에 대한 자세한 내용은 기여자 이름 목록을 포함하여 프로젝트 사이트인 https://aka.ms/vscodeloc를 방문하십시오.
- 프랑스어: Antoine Griffard, Quentin BRETON.
- 이탈리아어: Andrea Dottor, Emilie Rollandin, Aldo Donetti, Luigi Bruno, Piero Azi, Marco Dal Pino, Alessandro Alpi, Emanuele Ricci, Lorthirk, Riccardo Cappello.
- 독일어: Ettore Atalan.
- 스페인어: Alejandro Medina, Alberto Poblacion, José M. Aguilar.
- 일본어: Shunya Tajima, Satoshi Kajiura, Seiji Momoto, yoshioms, Hiroyuki Mori, Yuki Ueda, Yano Naoki, Yuichi Nukiyama.
- 중국어 (간체): Joel Yang, pluwen, Yurui Zhang, Simon Chan, YF, Vicey Wang.
- 중국어 (번체): Duran Hsieh, Winnie Lin, Alan Liu, Alan Tsai, Will 保哥, Han Lin.
- 한국어: 고경희.
- 러시아어: Ivan Kuzmenko.
- 불가리아어: Любомир Василев.
- 헝가리어: Tar Dániel, Dóczi Dominik.
- 포르투갈어 (브라질): Danilo Dantas, Otacilio Saraiva Maia Neto, Roger Figueiredo, Lucas Miranda, Rafael Oliveira, Yehoshua Oliveira, Bruno Sonnino, Roberto Fonseca.
- 터키어: Adem Coşkuner, Burak Karahan, Koray Sarıtaş.
- 네덜란드어: RubenJacobse, Gerald Versluis, Maurits Kammer.
- 핀란드어: Feetu Nyrhinen, Jussi Palo, Petri Niinimäki.
- 그리스어: Nickolaos Platides, Theodore Tsirpanis, George M, Christos Koutsiaris.
- 인도네시아어: Wildan Mubarok, Laurensius Dede Suhardiman, Joseph Aditya P G, G-RiNe Project, Adiyat Mubarak.
- 라트비아어: kozete.
- 폴란드어: Patryk Brejdak, Iwona Kubowicz, Sebastian Baran, Lukasz Woznicki, Mateusz Przybyłowicz.
- 스웨덴어: Eugen Cazacu.
- 우크라이나어: Fedir Gordiienko, SergZ, Bogdan Surai.
- 베트남어: Vuong, Hung Nguyen, Thanh Phu, Brian Nguyen.
- 크로아티아어: Nikša Mihaica, Bruno Vego.
- 영어 (영국): Matthew John Cheetham.