2018년 4월 (버전 1.23)
업데이트 1.23.1: 이번 업데이트는 다음 이슈들을 해결합니다.
다운로드: Windows: x64 | Mac: Intel | Linux 64비트: deb rpm tarball | 32비트: deb rpm tarball
Visual Studio Code 2018년 4월 릴리스에 오신 것을 환영합니다. 이번 마일스톤에서 VS Code 팀은 확장 프로그램 작성자를 지원하기 위한 API 작업에 중점을 두었지만, 이 버전에는 여러분이 좋아할 만한 많은 업데이트가 있습니다. 주요 내용 중 일부는 다음과 같습니다.
- 강조 표시된 들여쓰기 가이드 - 소스 코드 들여쓰기를 시각화하는 데 도움이 됩니다.
- 저장 시 코드 액션 실행 - 저장 시 가져오기 정리와 같은 액션을 실행합니다.
- NPM 스크립트 탐색기 - 프로젝트에서 NPM 스크립트를 빠르게 찾고, 실행하고, 디버그합니다.
- 문제 보기 필터링 - 오류 및 경고를 표시할 파일을 선택합니다.
- 마우스 가운데 버튼을 사용한 열 선택 - 빠른 열 선택을 위해 마우스 가운데 버튼을 드래그합니다.
- CSS 영역 접기 - CSS/SCSS/Less 코드에 영역을 만들어 유용한 코드 접기를 지원합니다.
- 새로운 속성에 대한 향상된 CSS 지원 - CSS 실험적 속성에 대한 스마트 제안.
- Markdown 작업 영역 기호 검색 - 전체 작업 영역에서 Markdown 헤더를 검색합니다.
- 확장 프로그램 작성 - 사용자 지정 활동 표시줄 보기 - 확장 프로그램 작성자가 자신만의 활동 표시줄 항목을 만들 수 있습니다.
- 새로운 배포 웹사이트 튜토리얼 - Azure Storage에 정적 웹사이트를 배포하는 방법을 알아봅니다.
이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com의 업데이트로 이동하십시오.
또한 Cloud Developer Advocate Brian Clark의 1.23 릴리스 하이라이트 비디오를 확인할 수 있습니다.
릴리스 노트는 VS Code의 주요 영역과 관련된 다음 섹션에 배열됩니다. 몇 가지 추가 업데이트입니다.
- 편집기 - 더 나은 유니코드 파일 지원, 더 안정적인 편집기 위치 지정.
- 워크벤치 - 검색 결과 복사, 더 나은 Git 클론 워크플로우, VS Code 프로세스 탐색기.
- 디버깅 - 로그포인트 표현식은 스마트 자동 완성 및 구조화된 객체 표시를 지원합니다.
- 언어 - JavaScript/TypeScript 가져오기 정리 액션, 영구 Markdown 미리 보기.
- 확장 프로그램 작성 - 새로운 웹뷰 및 파일 시스템 제공자 API, '소스' 파일 수준 액션.
Insider: 새로운 기능을 최대한 빨리 확인하고 싶으신가요? 야간 Insider 빌드를 다운로드하여 최신 업데이트를 가능한 한 빨리 사용해 볼 수 있습니다.
편집기
강조 표시된 들여쓰기 가이드
이제 VS Code는 커서를 다양한 소스 코드 블록 사이로 이동할 때 활성 들여쓰기 가이드를 강조 표시할 수 있습니다.

강조 표시 색상의 이름은 editorIndentGuide.activeBackground이며, workbench.colorCustomizations 설정에서 수정할 수 있습니다.
"workbench.colorCustomizations": {
"editorIndentGuide.activeBackground": "#ff0000"
}
저장 시 코드 액션 실행
새로운 editor.codeActionsOnSave 설정은 파일이 저장될 때 실행되는 코드 액션 집합을 구성할 수 있도록 합니다. 예를 들어 JavaScript, TypeScript 및 가져오기 정리를 제공하는 다른 확장 프로그램의 경우, 다음과 같이 설정하여 저장 시 가져오기 정리를 활성화할 수 있습니다.
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
언어별 설정 사용하여 언어별로 저장 시 실행되는 코드 액션을 활성화하거나 비활성화할 수도 있습니다. 다음 설정은 TypeScript 파일에만 저장 시 가져오기 정리를 활성화합니다.
"[typescript]": {
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"[typescriptreact]": {
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
}
마우스 가운데 버튼을 사용한 열 선택
VS Code에서 열(상자) 선택은 Shift와 Alt를 누른 상태에서 마우스 왼쪽 버튼을 사용하여 추가할 수 있습니다. 이제 마우스 가운데 버튼을 사용하여 열 선택을 만들 수도 있습니다.

참고:
editor.multiCursorModifier를ctrlCmd로 설정하면 Windows에서는Shift및Ctrl, macOS에서는Shift및Cmd가 수정자입니다.
UTF-16 인코딩 파일의 향상된 처리
VS Code는 항상 파일에 대한 UTF-16 인코딩을 지원했지만, 이 인코딩을 올바르게 감지하려면 BOM(바이트 순서 표시)이 필요했습니다. VS Code가 BOM을 찾지 못하면 파일이 열리지 않고 사용자에게 정보 메시지가 표시되었습니다.
이번 릴리스에서는 이 메시지에 파일을 텍스트로 열기 위한 새 액션이 추가되었습니다.

일단 열리면 텍스트를 디코딩하기 위해 인코딩을 변경할 수 있습니다.
또한 VS Code는 이제 BOM이 없는 UTF-16을 자동으로 감지하려는 휴리스틱을 사용합니다. 이 휴리스틱은 ASCII 문자만 포함하는 모든 UTF-16 파일에 대해 작동해야 합니다.
향상된 편집기 위치 지정
편집기 스크롤 높이를 변경하는 특정 경우(예: 줄 바꿈 편집기 크기 조정, 마우스 휠 확대/축소, CodeLens 수정)에는 편집기가 뷰포트에서 가운데 줄을 유지하려고 했습니다. 이제 VS Code는 뷰포트의 첫 번째 줄을 유지하여 더 안정적인 모양을 제공합니다.

워크벤치
문제 보기 필터링
이제 필터를 사용하여 문제 보기에서 파일을 포함하거나 제외할 수 있습니다.
- 포함/제외할 파일을 필터 입력란에 glob 패턴으로 사용합니다. 제외 패턴에는
!접두사가 있어야 합니다. 예를 들어,!*.js는 .js 확장자를 가진 모든 파일을 제거합니다. files.exclude설정과 일치하는 모든 파일을 제거하는 파일 제외 설정 사용 필터 버튼이 있습니다.
아래 짧은 동영상은 files.exclude 설정을 기반으로 프로젝트 out 디렉토리를 필터링하고 필터 입력란에 !**/node_modules/**를 입력하여 모든 node_modules를 무시하는 방법을 보여줍니다.

NPM 스크립트 실행
npm.enableScriptExplorer 설정을 사용하면 작업 영역에 정의된 스크립트를 표시하는 탐색기를 활성화할 수 있습니다.

탐색기는 다음을 지원합니다.
package.json파일 또는package.json파일이 선택된 상태에서scripts섹션 내에서 스크립트를 엽니다. 이것은 스크립트를 선택할 때 기본 액션입니다.- 통합 터미널에서 출력을 보여주는 작업으로 스크립트를 실행합니다.
- 스크립트를 디버그합니다. Node 디버거를 시작하려면 스크립트에
--inspect-brk와 같은 Node 디버그 옵션을 정의해야 합니다. (참고).
npm.exclude 설정을 사용하여 특정 폴더에 포함된 package.json 파일의 스크립트를 제외합니다.
Git 클론 개선 사항
Git 클론 워크플로우에 몇 가지 개선 사항이 있었습니다. Git: Clone 명령을 실행할 때
- 저장소 위치를 선택하기 위해 네이티브 대화 상자가 사용됩니다.
- 새로운 알림 진행률 API가 사용되어 작업 상태 보고가 개선되었습니다.
- VS Code는 클론된 저장소를 작업 영역에 추가할지 아니면 직접 열지를 묻는 메시지를 표시합니다.
Git 확장 프로그램은 시스템 전체 URI를 처리하기 위해 제안된 새 API를 채택했으며 특정 URI에 대해 Git 클론을 호출합니다. 다음은 https://github.com/microsoft/vscode-vsce.git을 클론하는 URI 예시입니다.
vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git
이 기능을 사용해 보고 싶다면
- Windows: 명령 프롬프트에서
explorer "vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git"을 입력합니다. - macOS: 쉘에서
open vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git을 입력합니다.
검색 컨텍스트 메뉴에서 결과 복사
검색 결과 트리 컨텍스트 메뉴에는 복사, 경로 복사, 모두 복사의 세 가지 새 옵션이 포함되어 있습니다. 이것은 검색 결과 공유 또는 내보내기를 더 쉽게 만들어 줄 매우 👍 받은 요청이었습니다.

검색 포함 및 제외 입력 상자 분리
지난달, 검색 보기의 포함 및 제외 입력 상자를 병합하여 단순화하고 공간을 절약하려고 했습니다. 그러나 많은 분들께서 이것이 검색 보기 사용 방식에 맞지 않는다는 피드백을 주셨습니다. 결국 변경 사항을 되돌리기로 결정했으며, 이번 릴리스에서는 1.22 이전처럼 별도의 포함/제외 상자를 사용합니다. 제외 상자의 패턴에 !를 사용할 필요가 없다는 점에 유의하십시오.

사용자 지정 활동 표시줄 보기
확장 프로그램 작성자는 이제 활동 표시줄에 자신만의 보기 컨테이너를 추가할 수 있습니다. 설치된 확장 프로그램에 따라 업데이트 후 파일 탐색기에서 사용자 지정 탐색기가 새 사용자 지정 보기 컨테이너로 이동하는 UI를 볼 수 있습니다. 예를 들어, 아래에서는 Azure App Service 및 Azure Databases 확장 프로그램의 탐색기가 전용 Azure 보기에 포함된 것을 볼 수 있습니다.

실행 중인 Visual Studio Code 프로세스 보기
개발자: 프로세스 탐색기 열기 명령 또는 도움말 > 프로세스 탐색기 열기 메뉴 항목을 사용하여 실행 중인 VS Code 프로세스에 대한 지속적으로 업데이트되는 정보를 포함하는 새 창을 엽니다. 프로세스는 CPU 및 메모리 사용량, PID 및 사용자 지정 이름과 함께 나열되며 마우스 오른쪽 버튼을 클릭하면 나타나는 컨텍스트 메뉴에서 종료할 수 있습니다.

통합 터미널
다중 루트에 대한 터미널 분할 지원
이제 다중 루트 작업 영역 내에서 터미널을 분할할 폴더를 선택할 수 있습니다. 이전 동작은 workbench.action.terminal.splitInActiveWorkspace 명령을 키 바인딩하여 다시 활성화할 수 있습니다.
언어
CSS 영역 접기
이제 CSS/SCSS/Less에서 영역을 접기 가능한 것으로 표시하기 위해 /* #region */ 및 /* #endregion */을 사용할 수 있습니다. SCSS/Less에서는 접기 표시자로 // #region 및 // #endregion을 사용할 수도 있습니다.

새로운 속성에 대한 향상된 CSS 지원
이전에는 VS Code에서 backdrop-filter와 같은 일부 실험적 CSS 속성에 대해 "알 수 없는 속성" 오류가 표시되었습니다.

CSS 린팅을 완전히 끄거나, PostCSS와 같은 CSS 프레임워크를 사용하여 실험적 CSS 속성을 사용할 수 있더라도 이 오류를 감수해야 했습니다.
이번 릴리스에서는 Mozilla Developer Network에서 가져온 데이터를 사용하여 VS Code는 이제 87개의 새 CSS 속성을 식별합니다. MDN에서 CSS 속성을 찾을 수 있다면 VS Code도 인식해야 합니다.
또한 MDN 데이터를 사용하여 VS Code는 이제 CSS/SCSS/Less에서 향상된 자동 완성을 제공하며 각 CSS 속성의 구문과 상태 값을 표시합니다.

아직 CSS 속성 값 유효성 검사를 위한 내장 지원은 없지만, CSSTree validator 확장 프로그램도 MDN 데이터를 사용하며 값 정의 구문에 따라 각 속성 값에 대한 린팅을 제공합니다.

Markdown 작업 영역 기호 검색
Markdown이 이제 작업 영역 기호 검색을 지원합니다. Markdown 파일을 처음 열면 (⌘T (Windows, Linux Ctrl+T))을 사용하여 현재 작업 영역의 모든 Markdown 파일 헤더를 검색할 수 있습니다.

영구 Markdown 미리 보기
VS Code를 다시 열 때 Markdown 미리 보기가 자동으로 복원됩니다.

이전에는 VS Code를 다시 시작할 때마다 미리 보기를 다시 열어야 했습니다.
TypeScript 2.8.3
VS Code는 이제 TypeScript 2.8.3과 함께 제공됩니다. 이 릴리스는 여러 중요 버그를 수정합니다.
JavaScript 및 TypeScript 가져오기 정리
JavaScript 및 TypeScript 가져오기 정리 기능이 이제 미리 보기에서 벗어났습니다. 가져오기 정리 (⇧⌥O (Windows, Linux Shift+Alt+O))를 실행하여 사용하지 않는 가져오기를 빠르게 제거하고 JavaScript 및 TypeScript 소스 코드의 나머지 가져오기를 정렬합니다.
이제 새로운 editor.codeActionsOnSave 설정을 사용하여 저장 시 가져오기 정리가 실행되도록 구성할 수도 있습니다. 다음은 TypeScript 파일에 대한 저장 시 가져오기 정리를 활성화하는 설정입니다.
"[typescript]": {
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"[typescriptreact]": {
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
}
디버깅
로그포인트 개선 사항
지난 릴리스에 도입된 로그포인트는 사용 편의성과 유용성이 향상되었습니다.
-
IntelliSense(스마트 자동 완성)가 로그 메시지와 조건부 중단점에 포함된 표현식에 추가되었습니다.
-
Node.js 디버깅에서 로그포인트를 사용할 때 로그 메시지에 포함된 구조화된 객체는 디버그 콘솔에서 확장 가능한 객체로 표시됩니다.

-
Node.js 디버깅에서 로그포인트는 이제 디버그 콘솔에서 소스 위치를 표시합니다.

-
로그포인트와 중단점은 편집기 여백의 아이콘을 클릭하여 쉽게 삭제할 수 있으므로 로그 메시지나 중단점 조건을 실수로 잃을 수 있습니다. 이를 방지하기 위해 VS Code는 이제 조건부 중단점이나 로그 메시지가 있는 중단점이 여백을 클릭하여 삭제될 때 확인 메시지를 표시합니다. 이 알림은 중단점을 삭제하는 대신 비활성화하는 옵션을 제공합니다.
-
마지막으로 디버그 메뉴에 새 중단점 > 로그포인트... 액션이 추가되었습니다.
확장 프로그램 작성
활동 표시줄에 대한 기여
점점 더 많은 확장 프로그램이 사용자 지정 보기를 만들고 대부분 파일 탐색기에 기여함에 따라 탐색기가 복잡해지고 있음을 알게 되었습니다. 확장하기 위해 VS Code는 이제 활동 표시줄에 기여할 수 있는 방법을 제공합니다. 예를 들어, 활동 표시줄에 테스트 기여가 있습니다. 확장 프로그램은 이제 자체 기여를 할 수 있습니다.
테스트 보기 컨테이너
확장 프로그램이 테스트 관련 보기를 기여할 수 있도록 활동 표시줄에 새로운 테스트 기여가 제공됩니다. 이 테스트 기여는 기본적으로 비어 있고 숨겨져 있으며, 보기가 기여될 때마다 표시됩니다. 이 예는 mocha 사용자 지정 보기가 활동 표시줄의 테스트 활동에 기여되는 방법을 보여줍니다.
"contributes": {
"views": {
"test": [
{
"id": "mocha",
"name": "mocha"
}
]
}
}

사용자 지정 보기 컨테이너
확장 프로그램은 이제 기여 포인트 viewsContainers를 사용하여 활동 표시줄에 추가 활동을 정의할 수 있습니다.
"contributes": {
"viewsContainers": {
"activitybar": [
{
"id": "package-explorer",
"title": "Package Explorer",
"icon": "resources/package-explorer.svg"
}
]
},
"views": {
"package-explorer": [
{
"id": "package-dependencies",
"name": "Dependencies"
},
{
"id": "package-outline",
"name": "Outline"
}
]
}
}

아이콘 사양
-
크기:아이콘은 24x24이며 50x40 정사각형 중앙에 배치됩니다. -
색상:아이콘은 단색으로 사용해야 합니다. -
형식:아이콘은 SVG 형식이 권장되지만, 모든 이미지 파일 형식이 허용됩니다. -
상태:모든 아이콘은 다음 상태 스타일을 상속합니다.상태 불투명도 기본값 60% 호버 100% 활성 100%
등록된 각 보기 컨테이너를 표시하는 명령이 등록됩니다. 위 패키지 탐색기 예시에서는 보기: 패키지 탐색기 표시가 됩니다. 보기: 보기 열기... 명령을 실행할 때 모든 보기 컨테이너가 나열됩니다.

참고: 각 보기에 대해 보기 컨테이너를 하나씩 만드는 대신 관련 보기를 단일 보기 컨테이너로 그룹화하는 것이 좋습니다.
소스 제어의 사용자 지정 보기
이제 활동 표시줄의 소스 제어 보기 컨테이너에 소스 제어 관리(SCM) 관련 사용자 지정 보기를 기여할 수 있습니다. 탐색기와 마찬가지로 이러한 보기를 표시, 숨기기, 재정렬할 수 있습니다.
"contributes": {
"views": {
"scm": [
{
"id": "git-compare",
"name": "Compare"
}
]
}
}

파일 시스템 제공자
확장 프로그램은 이제 ftp 서버와 같은 임의의 소스에서 파일과 폴더를 제공할 수 있으며 VS Code는 이를 일반 파일처럼 처리합니다. 이를 위해 확장 프로그램이 URI 스키마(예: ftp)와 연결하는 FileSystemProvider 인터페이스를 사용합니다. 이 인터페이스를 사용하면 편집기가 파일과 폴더(생성, 삭제, 읽기, 쓰기)를 검색하고 관리할 수 있습니다.

VS Code는 파일 시스템 제공자가 제공하는 구성 파일(settings.json, tasks.json, launch.json)을 읽고 수정할 수도 있습니다.
언어 식별자 및 문서 선택기
파일 시스템 제공자가 추가됨에 따라 모든 파일이 디스크에 있는 것은 아니며 확장 프로그램은 이를 인지해야 합니다. 짧지만 **중요한** 메시지는 모든 문서가 디스크에 있는 것은 아니며 확장 프로그램이 디스크 액세스에 의존하는 경우 먼저 스키마를 확인해야 한다는 것입니다.
인식 제고를 위해, 문서 필터가 아닌 언어 식별자만 사용하여 언어 기능을 등록할 때 표시되는 정보 메시지를 추가했습니다. 자세한 내용은 문서 선택기 주제를 참조하십시오.
마지막으로, 테스트에 사용할 샘플 확장 프로그램이 있습니다. 메모리에 모든 것을 저장하는 파일 시스템을 구현하며 디스크에는 아무것도 저장되지 않고, 이 파일 시스템을 사용하여 언어 기능을 테스트할 수 있습니다. 확장 프로그램은 여기에서 얻을 수 있습니다.
주의: TextDocument.isUntitled
파일 시스템 제공자가 추가됨에 따라 TextDocument.isUntitled의 의미가 true는 새로 생성된 문서(untitled 스키마 사용)에만 해당되도록 조정되었습니다. 이전에는 디스크에 없는 모든 문서가 untitled로 처리되었습니다. 이 변경은 특히 untitled가 아닌 문서가 디스크에 저장되어 있다고 가정하는 확장 프로그램의 동작을 변경할 수 있습니다.
진단 읽기
진단을 읽고 진단이 변경될 때 알림을 받는 새로운 API가 있습니다. languages.getDiagnostics 및 languages.onDidChangeDiagnostics를 참조하십시오. 예를 들어, SCM 확장 프로그램은 팀과 변경 사항을 공유하기 전에 오류가 없는지 확인할 수 있습니다.
이름 바꾸기 제공자 다듬기
RenameProvider API를 다듬었으며 이제 선택적으로 prepareRename이라는 새 함수를 구현할 수 있습니다. 이 함수를 사용하면 제공자는 VS Code가 이름을 바꿀 기호를 확인하고 유효성을 검사하는 데 도움을 줄 수 있습니다.
문서 변경 이벤트에 오프셋 기반 정보 포함
TextDocumentContentChangeEvent에는 새 속성 rangeOffset이 있으며, rangeLength와 함께 사용하면 확장 프로그램이 텍스트 문서 변경 사항을 추적하기 위해 (offset,length) 좌표를 사용할 수 있습니다.
코드 액션 종류: 소스
CodeActionKind.Source는 파일 전체에 적용되는 코드 액션을 식별합니다. 가져오기 정리는 Source 코드 액션의 좋은 예인데, 파일의 어느 위치에서든 트리거될 수 있기 때문입니다.
Source 코드 액션은 일반적인 빠른 수정 전구 메뉴에 표시되지 않습니다. editor.action.sourceAction 명령을 사용하여 명시적으로 요청해야 합니다. Source 코드 액션은 새로운 소스 액션 컨텍스트 메뉴에도 표시됩니다.
가져오기 코드 액션 정리
Source 코드 액션을 기반으로 새로 추가된 CodeActionKind.SourceOrganizeImports는 가져오기 정리 코드 액션을 식별합니다. 이러한 액션은 editor.action.organizeImports를 사용하여 트리거할 수 있으며 표준 키보드 단축키가 있습니다: ⇧⌥O (Windows, Linux Shift+Alt+O).
확장 프로그램이 이미 가져오기 정리를 구현하고 있다면, 사용자가 언어 간에 더 일관된 경험을 가질 수 있도록 CodeActionKind.SourceOrganizeImports를 사용하도록 마이그레이션하는 것이 좋습니다.
CodeActionProviderMetadata
registerCodeActionsProvider는 이제 선택적인 CodeActionProviderMetadata 인수를 받습니다. 이를 통해 확장 프로그램은 CodeActionProvider가 제공할 코드 액션 종류에 대해 VS Code에 알릴 수 있습니다. 이 정보는 VS Code에서 새로운 리팩터링 및 소스 액션 컨텍스트 메뉴를 활성화하는 데 사용됩니다. 예를 들어 리팩터링 컨텍스트 메뉴는 CodeActionProvider가 refactor.* 코드 액션을 반환할 것이라고 나타내는 CodeActionProviderMetadata로 등록될 때만 활성화됩니다.
Webview API
웹뷰 API를 통해 확장 프로그램은 VS Code 내에서 완전히 사용자 지정 가능한 보기를 만들 수 있습니다. 예를 들어, 내장 Markdown 확장 프로그램은 웹뷰를 사용하여 Markdown 미리 보기를 렌더링합니다. 웹뷰는 VS Code의 기본 API가 지원하는 것 이상의 복잡한 사용자 인터페이스를 구축하는 데에도 사용될 수 있습니다.

새로운 확장 프로그램 작성 페이지에서 웹뷰 API를 다룹니다. 또한 샘플 웹뷰 API 확장 프로그램은 여기에서 찾을 수 있습니다. 확장 프로그램 작성자들이 이 강력한 새 API를 어떻게 활용할지 기대됩니다.
애플리케이션 범위 설정
설정을 창 또는 리소스 수준에서 재정의되지 않고 애플리케이션 수준에서 적용되도록 하려면 이제 application 범위를 사용하여 할 수 있습니다.
"configuration": {
"properties": {
"git.path": {
"type": "string",
"description": "Path to the git executable",
"scope": "application"
}
}
}
참고: isExecutable 속성은 같은 목적을 위해 사용되었기 때문에 application 범위를 사용하는 것을 선호하여 사용 중단되었습니다.
제안된 확장 API
이번 마일스톤에는 여러 새로운 제안 확장 API가 추가되었습니다. 향후 마일스톤에서 충분히 확신이 서면 이러한 API를 안정 버전으로 추가할 계획입니다. 확장 프로그램에 어떻게 작동하는지에 대한 모든 피드백을 환영합니다.
참고: 이러한 API는 아직 제안 중이므로 사용하려면
package.json에"enableProposedApi": true를 추가하여 옵트인해야 하며, vscode.proposed.d.ts 파일을 확장 프로그램 프로젝트로 복사해야 합니다. 또한enableProposedApi속성을 사용하는 확장 프로그램은 마켓플레이스에 게시할 수 없습니다.
통합 터미널 API
통합 터미널 API에는 확장 프로그램 작성자가 모든 터미널에 액세스하고 여러 컴퓨터에서 터미널을 다중화할 수 있도록 하는 여러 제안 기능이 있습니다. 이전에는 확장 프로그램이 자신이 생성한 터미널만 액세스할 수 있었던 것과 달리 이제 모든 터미널에 API를 통해 액세스할 수 있습니다.
console.log(window.terminals);
이에 대한 일치하는 이벤트가 있습니다.
window.onDidOpenTerminal(terminal => {
console.log('New terminal: ' + terminal.name);
});
ANSI 이스케이프 시퀀스를 포함하여 터미널 프로세스에서 나오는 원시 데이터 스트림에 후킹할 수도 있습니다.
const terminal = window.createTerminal();
terminal.onData(data => {
console.log('Terminal data: ' + data);
});
작업 API
작업 API는 확장 프로그램에서 작업을 쿼리하고 실행하는 데 더욱 세련되었습니다. 새로 지원되는 API는 다음과 같습니다.
fetchTasks는 작업의 하위 집합만 쿼리하기 위한 필터를 사용합니다.taskExecutions는 실행 중인 모든 작업에 대한 실행 객체를 가져오는 것을 지원합니다.executeTask,taskExecutions또는 이벤트 중 하나를 통해 제공되는TaskExecution객체는===를 사용하여 비교할 수 있습니다.
이 API는 아직 제안 상태입니다.
프로토콜 핸들러 API
프로토콜 핸들러 API는 확장 프로그램이 시스템 전체 URI를 처리할 수 있도록 합니다. 이 기능은 다른 애플리케이션이 특정 확장 프로그램으로 URI를 보낼 수 있기 때문에 애플리케이션 간 통합에 유용합니다.
export interface ProtocolHandler {
handleUri(uri: Uri): void;
}
export namespace window {
/**
* Registers a protocol handler capable of handling system-wide URIs.
*/
export function registerProtocolHandler(handler: ProtocolHandler): Disposable;
}
프로토콜 핸들러 등록 예시입니다.
function activate() {
registerProtocolHandler({
handleUri(uri: Uri) {
console.log('Received URI', uri.toString());
}
});
}
이 API의 경우 URI 권한과 이를 처리할 확장 프로그램 간에는 엄격한 관계가 있습니다. URI 권한은 확장 프로그램의 ID(publisher.name)여야 합니다. 다음 URI를 예로 들어 보겠습니다.
vscode://vscode.git/clone?url=foobar
\____/ \________/ \___/ \_________/
| | | |
scheme authority path query
이 URI의 권한은 vscode.git이므로 VS Code는 적절하게 프로토콜 핸들러를 등록한 경우 vscode.git 확장 프로그램으로 전달합니다.
URI가 확장 프로그램이 등록되기 전에도 열릴 수 있으므로, 새로운 onUri 활성화 이벤트도 도입되었습니다. 이를 통해 확장 프로그램은 자신에게 전달된 URI가 열릴 때마다 활성화될 수 있습니다.
참고: URI 처리는 Linux에서는 아직 지원되지 않습니다.
접기 제공자 API
1.22 릴리스에서 제안된 접기 범위 제공자가 업데이트되었으며 이제 공식 API가 되었습니다. 언어 확장 프로그램은 이제 구문 인식 접기 범위를 제공할 수 있습니다.
/**
* Register a folding range provider.
*
* Multiple providers can be registered for a language. In that case providers are asked in
* parallel and the results are merged.
* If multiple folding ranges start at the same position, only the range of the first registered provider is used.
* If a folding range overlaps with an other range that has a smaller position, it is also ignored.
*
* A failing provider (rejected promise or exception) will
* not cause a failure of the whole operation.
*
* @param selector A selector that defines the documents this provider is applicable to.
* @param provider A folding range provider.
* @return A [disposable](#_Disposable) that unregisters this provider when being disposed.
*/
export function registerFoldingRangeProvider(
selector: DocumentSelector,
provider: FoldingRangeProvider
): Disposable;
확장 프로그램에 대한 기여
저희 팀은 여러 VS Code 확장 프로그램을 유지 관리하거나 기여합니다. 이번 달 가장 주목할 만한 내용은 다음과 같습니다.
Sublime Text Keymap 확장 프로그램
Sublime Text Keymap 확장 프로그램은 이제 Sublime에서 설정을 가져올 수 있습니다.
확장 프로그램이 처음 시작되면 가져올 수 있는 모든 Sublime 설정이 표시되는 프롬프트가 나타납니다. 나중에 설정을 가져오려면 명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))에서 Sublime Text Keymap: Sublime Text 설정 가져오기 명령을 사용합니다.

엔지니어링
향상된 스모크 테스트 안정성
VS Code는 항상 품질을 엄격하게 관리하는 데 사용되는 스모크 테스트를 가지고 있었습니다. 스모크 테스트를 자동화했지만 안정적으로 만들지는 못했습니다. 이번 마일스톤에서는 스모크 테스트의 안정성과 성능을 개선하기 위해 노력했습니다. 자세한 내용은 풀 요청 #47471에서 확인할 수 있습니다.
새로운 문서
Azure Storage를 사용한 웹사이트 배포 튜토리얼
Azure에 정적 웹사이트 배포 튜토리얼을 통해 Azure Storage를 사용하여 정적 웹사이트를 만들고 배포하는 방법을 배울 수 있습니다.
VS Code 블로그 게시물
VS Code 블로그에 최근 두 개의 게시물이 올라왔습니다.
- Bing 기반 VS Code 설정 검색 - Bing의 자연어 서비스를 사용하여 설정 검색을 개선합니다.
- 텍스트 버퍼 재구현 - 최적화된 텍스트 버퍼 구현 개발에 대해 읽어보세요.
주요 변경 사항
- 10663: 비교 보기에서 탭 전환 시 보기 상태 유지
- 24634: macOS: 창에 acceptsFirstMouse를 활성화하는 설정 추가
- 29549: 멀티 스레드 디버깅은 스레드 중지를 지원해야 합니다.
- 46785: 파일에 포커스가 없을 때 "Finder에서 보기"는 작업 영역 폴더를 열어야 합니다.
- 47274: Node 로그포인트가 디버그 콘솔에서 VM 소스로 표시됩니다.
- 47478: 설치되지 않은 확장 프로그램 감지
- 48733: 디버깅 중 호버 제공자 호출을 활성화하는 debug.enableAllHovers 옵션 도입
- 46414: 터미널에서 Node.js 프로세스 디버깅 시 더 이상 디버그 콘솔에 출력이 표시되지 않습니다.
감사합니다
마지막으로, VS Code를 더욱 발전시키는 데 도움을 준 다음 분들께 진심으로 감사드립니다.
vscode 기여
- @alexglazkov9: 통합 터미널은 폴더가 없는 창에서 열리지 않습니다. PR #46518
- Brett Cannon (@brettcannon): Python에서 접기를 위해 # 및
region사이에 공백 허용. PR #46885 - @cody: 결과가 없어도 검색 지우기 활성화. PR #48324
- @costincaraivan: YAML에 영역/영역 종료 접기 표시자 추가. PR #47722
- David (@ddruker): 통합 터미널에서 Esc 키를 눌러 선택 해제. PR #47042
- Dustin Campbell (@DustinCampbell): 최신 버그 수정을 위해 C# TextMate 문법 업데이트. PR #47520
- Florian Traber (@floriantraber): Git 삭제 팝업을 모달로 변경. PR #47052
- Filip Malinowski (@fmal): 축약형 선언 대신 background-color 명시적으로 설정. PR #47785
- @ivorhuang: 디버거가 아직 시작되지 않은 경우 재시작 시 디버거 시작. PR #47219
- Josh Goldberg (@JoshuaKGoldberg): 소스에서 isInsalled 오타 수정. PR #47435
- @KarelCasier: 접기 가능한 커서 비활성화 설정 추가 (#_37967). PR #38175
- Kenny Le (@kennyle1412): 작업 영역 경로를 기반으로 터미널 분할. PR #46461
- Laurel Williams (@lwillia): 확장 프로그램 ID에서 트리플 클릭 시 추가 정보 선택되는 문제 수정. PR #47921
- Matt Acosta (@mattacosta): PHP 함수 재생성. PR #47865
- Dmitry Ignatovich (@mechatroner): 대규모 파일 매개변수를 사용자 설정으로 이동. PR #44988
- Michael Klement (@mklement0): PowerShell Core shebang 줄을 지원하도록 package.json 업데이트. PR #44239
- Niklas Mollenhauer (@nikeee): Hover#range를 선택 사항으로 변경. PR #48004
- Pascal Fong Kye (@pfongkye): 서식 지정 시 의미 있는 경고 메시지. PR #47919
- Yemi Bedu @ P&R (@pr-yemibedu): 작은 타이포그래피 변경. PR #47451
- Pradeep Murugesan (@pradeepmurugesan)
- Benas Svipas (@svipben): 고대비에 대한 다른 테두리 스타일. PR #46956
- vincentLiu (@vincentLiuxiang): QuickOpen 재사용을 위한 SymbolEntry 내보내기. PR #47544
vscode-extension-samples 기여
- Niklas Mollenhauer (@nikeee):
client폴더를lsp-sample로 변경. PR #59
language-server-protocol 기여
- Simon Marchi (@simark): TextDocumentSyncKindIncremental -> TextDocumentSyncKind.Increm... 변경. PR #419
- Adelar da Silva Queiróz (@adelarsq): 언어별 언어 서버 정렬. PR #424
- Geoffrey Gilmore (@ggilmore): "textDocument/didOpen" 요구 사항 명확화. PR #431
- Junfeng Li (@autozimu): 오타. PR #434
- Niklas Mollenhauer (@nikeee): TextDocuments#get(uri: string)에
undefined추가 PR #339 - Caleb Lloyd (@caleblloyd): 데스크톱에서 페이지를 벗어나는 고정 사이드바 수정 PR #444
- Diego Berrocal (@CestDiego): PR #450
- Remy Suen (@rcjsuen):
vscode-languageserver-node에 기여
vscode-chrome-debug 기여
- @digeff
- Alexey Velikiy (@jonyrock): 코드에서 'json' 형식을 'javascript'로 변경 PR #640
vscode-chrome-debug 기여
vscode-node-debug2에 기여
localization 기여
Transifex VS Code 프로젝트 팀에는 800명 이상의 회원이 있으며 매월 약 100명의 활성 기여자가 있습니다. 새로운 번역 제공, 번역 투표 또는 프로세스 개선 제안 등 여러분의 기여에 감사드립니다.
다음은 이번 릴리스의 기여자 스냅샷입니다. 프로젝트에 대한 자세한 내용은 기여자 이름 목록을 포함하여 프로젝트 사이트인 https://aka.ms/vscodeloc를 방문하십시오.
- 프랑스어: Antoine Griffard, Adrien Clerbois, Thierry DEMAN-BARCELO, Jean Cuteaux, Quentin BRETON.
- 이탈리아어: Alessandro Alpi, Andrea Dottor, Aldo Donetti, Marco Dal Pino, Riccardo Cappello.
- 독일어: J.M., Levin Rickert.
- 스페인어: Andy Gonzalez, Alejandro Medina, Alberto Poblacion, Thierry DEMAN-BARCELO, Eickhel Mendoza.
- 일본어: Shunya Tajima, Yuichi Nukiyama, Yosuke Sano, Seiji Momoto, Satoshi Kajiura, Toshinori Sugita.
- 중국어 (간체): Joel Yang, YF, pluwen.
- 중국어 (번체): Winnie Lin, Duran Hsieh, Ryan Tseng, Alan Tsai, alantea, Will 保哥.
- 한국어: 이창준, 김한슬마로.
- 러시아어: Michel Ace, Ivan.
- 불가리아어: Любомир Василев.
- 헝가리어: Tar Dániel.
- 포르투갈어 (브라질): Alessandro Fragnani, Roberto Fonseca, Marcelo Fernandes, Rodrigo Crespi, Matheus Palu, Bruno Sonnino, Douglas Eccker, douglas.martim.
- 포르투갈어 (포르투갈): Hugo Martins, Daniel Correia, Isac Van Dunem, Tiago Costa, João Mata.
- 터키어: Adem Coşkuner, Burak Karahan, Özgür Öktem, Ömer Büyükçelik.
- 보스니아어: Muharem Basanovic, Bahrudin Hrnjica, Ismar Bašanović, Almir Vuk.
- 체코어: Vít Staniček, Vojtěch Habarta, m_fr, Frantisek Veris, Jakub Skořepa, Michal Zobec, Ferdinand Prantl, Ľubomír Kováč, Jan Brudný.
- 네덜란드어: Marco van den Hout, Maarten van Stam, Gerald Versluis.
- 핀란드어: Petri Niinimäki, Feetu Nyrhinen.
- 힌디어: Brahma Dev.
- 인도네시아어: Febrian Setianto (Feber), Wildan Mubarok, Adrian M. R., G-RiNe Project, Joseph Aditya P G, Mulia Arifandi Nasution, Herman Prawiro.
- 라트비아어: kozete, Pēteris Kļaviņš, Edgars, Simone Chiaretta.
- 폴란드어: Joanna Skurzyńska, Mateusz Wyczawski.
- 루마니아어: Schiriac Robert.
- 세르비아어: Jean Cuteaux.
- 태국어: ภูมิไผท จันทรศรีวงศ์.
- 우크라이나어: Dmytro Kyrychuk, Borys Lebeda.
- 에스페란토: Andy Hampton.