2016년 9월 (버전 1.6)
1.6.1 복구 빌드
최종 1.6 번역을 추가하고 몇 가지 중요한 이슈를 수정하기 위해 1.6.1 복구 빌드를 출시합니다.
다운로드: Windows | Mac | Linux 64비트: .tar.gz .deb .rpm | Linux 32비트: .tar.gz .deb .rpm
9월 릴리스 요약
VS Code 9월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러 가지 중요한 업데이트가 포함되어 있으며, 주요 내용은 다음과 같습니다.
- TypeScript 2.0 - JavaScript 및 TypeScript, 그리고 확장 프로그램 개발을 위한 언어 개선.
- 저장 시 형식 지정 - 저장 시 형식 지정 도구를 실행하여 코드를 깔끔하게 유지하세요.
- 창 전환 - 명령 팔레트를 통해 VS Code 창(인스턴스) 간에 빠르게 이동하세요.
- 검색어 기록 - 검색 상자에서 과거 검색어를 쉽게 다시 사용하세요.
- 실행 스크립트 지원 - 디버깅 전에 NPM 스크립트를 실행할 수 있습니다.
- 작업 영역 확장 권장 사항 - 팀의 다른 구성원을 위해 확장 프로그램 권장 사항을 제공하세요.
- 설정 API - 설정을 프로그래밍 방식으로 변경할 수 있습니다. 이를 통해 영구적인 자동 저장 및 파일 연결과 같은 새로운 옵션을 사용할 수 있습니다.
- VIM 스타일 상대 줄 번호 - 현재 커서 위치를 기준으로 줄 번호를 표시합니다.
- Node 6.3+ 디버거 - V8 Inspector Protocol을 지원하는 실험적인 확장 프로그램이 제공됩니다.
- 미리보기 확장 팩 - 확장 프로그램 세트를 Marketplace에서 단일 다운로드로 묶습니다.
- 미리보기 TS/JS 문법 - 200개 이상의 수정 사항이 포함된 TS/JS용 새 색상 지정기가 제공됩니다. 다음 릴리스에 포함될 예정입니다.
릴리스 노트는 VS Code의 주요 영역과 관련된 다음 섹션에 배열됩니다. 몇 가지 추가 업데이트입니다.
- 워크벤치 - 이미지 크기 및 파일 크기 세부 정보 보기.
- 편집기 - UTF-16 대체 쌍을 지원하는 유니코드 개선, 공백 설정 개선.
- 언어 - TML/Razor/Handlebar 지원 업데이트.
- 확장 프로그램 - 확장 프로그램 식별자 배지, 확장 프로그램 업데이트 버전 확인.
- 디버깅 - 구성 가능한 외부 터미널 지원, 소스 맵을 위한 glob 패턴.
- 확장 프로그램 개발 - launch.json에 대한 프로그래밍 방식 액세스를 포함한 디버그 프로토콜 업데이트.
다운로드: Windows | Mac | Linux 64비트: .tar.gz .deb .rpm | Linux 32비트: .tar.gz .deb .rpm
워크벤치
VS Code 내 릴리스 노트
최신 릴리스 노트를 검토하기 위해 웹사이트를 방문할 필요가 없습니다. 이제 VS Code 자체 내에서 직접 볼 수 있습니다. 전역 릴리스 노트 보기 명령 또는 도움말 > 릴리스 노트 메뉴를 사용하여 액세스할 수 있습니다. 아마도 지금 이 노트를 읽고 있는 방법일 것입니다. :)
모든 곳에 아이콘
8월 릴리스에서 파일 아이콘 지원을 위해 진행한 작업을 계속하여 UI 전반에 걸쳐 더 많은 곳에 파일 아이콘을 추가했습니다. 여기에는 파일이 표시되는 대부분의 트리(예: 문제 패널, 검색 결과, 열린 편집기 섹션)와 빠른 열기 결과 및 편집기 머리글이 포함됩니다.
모든 곳에서 아이콘을 보고 싶지 않다면, 예를 들어 탭 머리글에서 workbench.editor.showIcons라는 새 설정을 추가했습니다.
![]()
실행 중인 창 간 전환
열려 있는 VS Code 창 간에 빠르게 이동할 수 있는 새 명령을 추가했습니다. 간단히 명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))를 열고 창 전환을 입력하세요. 열려 있는 모든 VS Code 창(인스턴스)을 보여주는 드롭다운이 나타나며, VS Code 내에서 키보드를 떠나지 않고도 빠르게 이동할 수 있습니다.

이미지 크기 및 이진 파일 크기
VS Code에서 이진 파일을 열면 상태 표시줄에 추가 메타 정보가 표시됩니다. 모든 이진 파일의 경우 파일 크기를 표시하고, 이미지의 경우 이미지 크기도 표시합니다.

VS Code는 이제 디스크에서 이미지 파일 변경 사항을 감지하므로 더 이상 오래된 버전의 이미지를 보지 않아도 됩니다.
편집기
저장 시 형식 지정
저장할 때마다 소스 코드가 형식화되기를 원하십니까? VS Code는 이제 "저장 시 형식 지정"을 지원합니다. 이 기능은 관련 설치된 형식 지정기 확장을 자동으로 가져와 각 저장 시 전체 문서를 형식화합니다. "editor.formatOnSave": true를 설정하여 "저장 시 형식 지정"을 활성화하세요.
참고: 커서와 선택 영역을 안정적으로 유지하기 위해 지연 후 저장 시에는 형식 지정이 수행되지 않습니다.
검색어 기록
이제 전역 검색 보기 및 편집기 찾기 위젯에서 이전 검색어로 이동할 수 있습니다.
- Alt+Up은 기록에서 이전으로 이동합니다. 해당 명령은
history.showPrevious입니다. - Alt+Down은 기록에서 다음으로 이동합니다. 해당 명령은
history.showNext입니다.
호버 및 IntelliSense UI 일관성
호버 위젯 UI가 업데이트되어 VS Code의 IntelliSense 환경과 더 일치하도록 조정되었습니다.

자동 저장 메뉴 항목
자동 저장은 여러 시나리오에 유용한 기능입니다. 이 기능을 더 쉽게 찾을 수 있도록 VS Code의 파일 메뉴에 자동 저장 토글이 추가되었습니다. 이 토글은 전역 사용자 settings.json 구성 파일의 files.autoSave 설정을 토글합니다.
파일 연결 구성
특정 파일 형식의 언어 모드를 반복적으로 설정하는 것은 번거롭고 파일 연결 매핑을 구성하는 것은 사용자 또는 작업 영역 설정을 통해 수동으로 수행하는 과정이었습니다. 이제 파일의 언어 모드를 변경할 때 ...에 대한 파일 연결 구성을 선택하면 사용자 설정 파일에 저장되고 기억됩니다.
유니코드 개선
VS Code는 이제 UTF-16 대체 쌍을 더 잘 처리하고 대체 쌍이 깨지지 않도록 모든 편집을 검증합니다. 이는 소스 코드에 이모티콘과 같은 것을 추가하려는 경우 특히 중요합니다.
줄 번호 및 공백 설정 개선
여러 편집기 설정이 새로운 옵션을 지원하도록 업데이트되었습니다.
-
editor.renderWhitespace가능한 값은 이제"all","boundary"및"none"입니다."boundary"옵션은 단어 사이의 단일 공백을 렌더링하지 않습니다. -
editor.lineNumbers가능한 값은"on","off"및"relative"입니다."relative"는 현재 커서 위치에서 줄 수를 표시합니다.
언어
TypeScript 2
VS Code 1.6에는 이제 TypeScript 2.0.3이 포함됩니다. 작업 영역에서 TypeScript 1.8.10으로 돌아가려면 다음을 수행하십시오.
- 작업 영역 폴더로 이동합니다.
npm install typescript@1.8.10을 실행하여 TypeScript 버전 1.8.10을 설치합니다.- VS Code를 시작합니다. 작업 영역 버전(1.8.10) 또는 번들 버전(2.0.3)의 TypeScript를 사용할 것인지 묻는 메시지가 표시됩니다. 작업 영역 버전을 선택하고
typescript.tsdk작업 영역 설정 변경을 확인합니다.
TypeScript
TypeScript 2.0.3에는 엄격한 null 검사 또는 모듈식 라이브러리 종속성과 같은 새로운 기능이 많이 포함되어 있습니다. 새로운 기능의 전체 목록은 여기에서 찾을 수 있습니다.
새로운 기능 외에도 TypeScript 2.0.3에는 많은 버그 수정이 포함되어 있습니다. 프로젝트를 TypeScript 2.0.3으로 처음 컴파일할 때 추가 컴파일 시간 오류가 발생할 수 있습니다.
JavaScript
VS Code의 JavaScript는 TypeScript로 구동되며 VS Code에 번들로 제공되는 TypeScript 버전이 버전 2.0.3으로 업데이트되었습니다.
이는 JavaScript 지원에 대한 여러 가지 개선 사항을 제공합니다.
- JSDoc 지원이 개선되었으며 많은 문제가 해결되었습니다.
- 파서 이제 TypeScript 파서가 인식할 수 있고 JavaScript 표준 제안의 일부인 모든 구문을 허용합니다. 예를 들어, 정적 클래스 속성이 더 이상 유효하지 않은 것으로 표시되지 않습니다.
또한 JavaScript에도 적용할 수 있는 TypeScript 개선 사항이 있습니다.
- 이제
jsconfig.json파일에 glob 지원이 있습니다. - 새로운 ECMAScript 버전을 --lib를 사용하여 포함하는 데 더 나은 지원.
- 파일 확장자가 있는 모듈 가져오기에 대한 더 나은 지원.
매우 큰 개선 사항 중 하나는 타입 선언 파일(typings)의 획득이 단순화되었다는 것입니다. 이제 NPM을 직접 사용하여 @types 매개변수로 typings를 가져올 수 있습니다.
예를 들어 lodash의 typings를 가져오려면 다음을 실행할 수 있습니다.
npm install --save-dev @types/lodash
미리보기 TypeScript JavaScript 문법
TypeScript/JavaScript TextMate 문법이 개선된 구문 강조 표시를 위해 재작업되었습니다. 이 작업은 현재 Marketplace에서 확장 프로그램으로 사용할 수 있습니다. 10월에 이 버전으로 전환할 계획입니다. 지금 이 확장 프로그램을 설치하고 피드백을 제공해 주세요.
HTML/Razor/Handlebar 지원 업데이트
VS Code를 사용할 수 있게 된 이후로 일부 언어가 VS Code 내에서 직접 구현되어 확장 프로그램으로 구현되지 않은 부채 항목이 있었습니다. 지난 몇 번의 마일스톤에서 JSON, CSS, LESS, SASS 언어를 자체 확장 프로그램으로 추출하여 이 부채를 줄였습니다. 9월에는 HTML 및 관련 언어인 Razor 및 Handlebar에 대해 이 작업을 수행했습니다. 이러한 언어는 이제 모두 언어 서버 프로토콜을 사용하여 구현됩니다.
이는 주요 리팩터링이며 결과적으로 일부 언어 기능이 아직 구현되지 않았습니다.
다음 반복에서 이러한 기능을 다시 가져오기 위해 노력할 것입니다.
그러나 아직 끝나지 않았습니다... 이제 언어를 확장 프로그램으로 추출했으므로 다음 과제는 이러한 언어의 중첩을 지원하는 것입니다. 즉, HTML에 JavaScript 또는 CSS를 포함하는 것입니다. 10월에 이 작업을 할 것입니다.
확장
작업 영역 확장 권장 사항
특정 작업 영역과의 작업을 더 생산적으로 만드는 확장 프로그램 세트가 있는 경우가 많습니다. 이제 작업 영역에 대한 권장 확장 프로그램 목록을 만들 수 있습니다. 권장 사항 세트는 .vscode 폴더에 있는 extensions.json 파일에 정의됩니다. 이를 통해 권장 사항을 팀 내에서 쉽게 공유할 수 있습니다.
확장 프로그램: 작업 영역 권장 확장 프로그램 구성 명령을 사용하여 이 파일을 만들 수 있습니다.
예를 들어, vscode 작업 영역에 사용하는 extensions.json 파일은 다음과 같습니다.
{
"recommendations": [
"eg2.tslint",
"dbaeumer.vscode-eslint",
"msjsdiag.debugger-for-chrome"
]
}
위의 recommendations 설정에서 볼 수 있듯이 VS Code 코드베이스에서 작업하는 모든 사용자에게 TSLint 및 ESLint 확장을 사용하는 것을 권장합니다. 또한 Chrome 디버거 확장을 사용하는 것도 권장합니다.
VS Code는 작업 영역을 처음 열 때 사용자에게 권장 확장 프로그램을 설치하라는 메시지를 표시합니다. 사용자는 확장 프로그램: 작업 영역 권장 확장 프로그램 보기 명령으로 목록을 검토할 수도 있습니다.

미리보기 확장 팩
Marketplace에서 '확장 팩' 게시를 지원하도록 추가했습니다. 확장 팩은 함께 설치할 수 있는 확장 프로그램 세트입니다. 이를 통해 사용자가 좋아하는 확장 프로그램을 다른 사용자와 쉽게 공유할 수 있습니다. 또 다른 사용 사례는 PHP 개발과 같은 특정 시나리오에 대한 확장 프로그램 세트를 만들어 PHP 개발자가 VS Code를 빠르게 시작하도록 돕는 것입니다. 이 기능은 더 많은 작업이 필요하다는 이해 하에 미리보기로 제공됩니다.
확장 팩은 다른 확장 프로그램에 종속되는 확장 프로그램으로 표시됩니다. 이 종속성은 package.json 파일의 extensionDependencies 속성을 사용하여 표현됩니다.
예를 들어, 디버거와 언어 서비스를 포함하는 PHP용 확장 팩은 다음과 같습니다.
"extensionDependencies": [
"xdebug.php-debug",
"zobo.php-intellisense"
]
확장 팩을 설치할 때 VS Code는 확장 프로그램 종속성도 설치합니다.
확장 프로그램 식별자 배지
작업 영역 권장 사항 및 확장 팩에 필요한 확장 프로그램 식별자의 검색 용이성을 위해 확장 프로그램 세부 정보 보기에 배지를 추가했습니다. 확장 프로그램은 게시자 이름과 확장 프로그램 이름을 점(.)으로 구분하여 고유하게 식별됩니다.
.
확장 프로그램 업데이트 버전 확인
이제 확장 프로그램이 Marketplace에서 VS Code 설치와 호환되는 새 버전이 있는 경우에만 확장 프로그램을 오래된 것으로 표시합니다.
참고: 이 기능은 확장 프로그램이 최신 버전의 vsce 게시 도구를 사용하여 게시된 경우에만 적용됩니다.
디버깅
구성 가능한 외부 터미널
외부 터미널에서 디버그 대상을 실행하는 것이 이제 디버거 확장 프로그램에 대한 VS Code 서비스로 제공되며, 이를 통해 널리 채택될 것으로 기대합니다. 이의 유용한 부작용은 기존 terminal.external.windowsExec, terminal.external.osxExec 및 terminal.external.linuxExec 설정을 통해 사용할 터미널 프로그램을 구성할 수 있다는 것입니다.
참고: 이번 릴리스에서는 내장 디버그 확장 프로그램만 이 새로운 기능을 채택했습니다.
'npm' 및 기타 도구를 지원하는 실행 구성
자주 요청되던 기능은 실행 구성에서 직접 'npm' 스크립트를 지원하는 것이었습니다. 이는 기존 실행 구성 개념의 다음과 같은 변경 사항으로 이제 가능합니다.
- PATH에서 사용 가능한 프로그램(예: 'npm', 'mocha', 'gulp' 등)은 이제
runtimeExecutable속성에 사용할 수 있으며 인수는runtimeArgs를 통해 전달될 수 있습니다. program속성은 더 이상 필수가 아니므로 npm 스크립트가 이미 실행할 프로그램을 지정하는 경우 도움이 됩니다.port속성을 통해 디버그 포트를 지정하면 디버그 포트가 일반적으로 npm 스크립트로도 지정되므로--debug-brk=nnnn속성이 더 이상 자동으로 추가되지 않습니다.
'npm' 예제를 살펴보겠습니다. package.json에 'debug' 스크립트가 있는 경우, 예를 들어
"scripts": {
"debug": "node --nolazy --debug-brk=5858 myProgram.js"
},
해당 실행 구성은 다음과 같습니다.
{
"name": "Launch via NPM",
"type": "node",
"request": "launch",
"cwd": "${workspaceRoot}",
"runtimeExecutable": "npm",
"windows": {
"runtimeExecutable": "npm.cmd"
},
"runtimeArgs": ["run-script", "debug"],
"port": 5858
}
참고: Windows에서는 올바른 확장자를 가진 실행 파일을 지정해야 합니다. 예를 들어 Linux 및 macOS의 셸 스크립트인
npm대신npm.cmd를 사용하세요.
소스 맵 설정을 위한 Glob 패턴 지원
빌드 프로세스가 특정 디렉토리로 JavaScript 코드를 생성하는 트랜스파일된 코드(예: TypeScript)를 디버깅할 때 Node.js 디버거가 생성된 코드를 찾도록 돕는 것이 필요합니다. 이전 VS Code 버전에서는 outDir 속성을 통해 생성된 소스 코드의 루트 디렉토리를 지정하여 이 작업을 수행했습니다.
9월 릴리스에서는 생성된 JavaScript 파일 집합에 포함하거나 제외할 파일을 위해 여러 glob 패턴을 사용할 수 있습니다. 이를 위해 새 배열 형식 속성인 outFiles가 도입되었습니다. 이전 outDir은 여전히 지원되지만 향후 지원이 중단될 예정입니다.
다음 예는 생성된 코드가 "out" 및 "node_modules" 디렉토리에 있고 생성된 테스트 코드를 제외하려는 경우 소스 맵을 구성하는 방법을 보여줍니다.
{
"sourceMaps": true,
"outFiles": [
"${workspaceRoot}/{out,node_modules}/**/*.js",
"!${workspaceRoot}/out/tests/**/*.js"
]
}
실험적 Node 디버거
이제 Node.js가 --inspect 플래그를 통해 노출하는 V8 Inspector Protocol을 사용하는 실험적인 디버그 확장 프로그램이 있습니다. 이는 Chrome 및 기타 대상에서 노출하는 프로토콜과 동일합니다. 이 확장 프로그램은 Debugger for Chrome 확장 프로그램 및 기타 여러 확장을 지원하는 vscode-chrome-debug-core 라이브러리에서 실행됩니다.
참고 Windows에서 6.x 버전은 32비트 Node.js 버전에서만 이 기능을 지원합니다. v7의 최신 빌드는 64비트 또는 32비트에서 작동해야 합니다. 이 이슈를 참조하세요.
이 확장 프로그램은 결국 vscode-node-debug와 기능적으로 동등해지겠지만 아직은 아닙니다. 개요는 여기에 기록되어 있으며, vscode-node-debug2 리포지토리 및 vscode-chrome-debug-core 리포지토리의 이슈를 볼 수 있습니다. 대부분의 경우 Node.js v6.3+에서 실행되는 한 기존 Node.js 실행 구성에서 "type": "node2"를 설정하면 동일하게 작동해야 합니다.
참고: 확장 프로그램 README의 문제 해결 팁을 참조하세요.
확장 프로그램 작성
TypeScript 작성
VS Code 확장 프로그램용 Yeoman 생성기가 TypeScript 버전 2.0.x를 사용하도록 업데이트되었습니다. 새 VS Code 확장을 시작하려면 npm install -g yo generator-code를 사용하여 yo와 확장 프로그램 생성기를 설치하고 yo code를 사용하여 실행하면 됩니다. TypeScript 1.8.x를 사용하는 기존 확장이 있는 경우 다음 단계를 사용하여 TypeScript 2.0.3으로 마이그레이션할 수 있습니다.
package.json 파일을 열고 다음 변경 사항을 적용합니다.
- TypeScript 개발자 종속성을
"typescript": "x.x.x"에서"typescript": "^2.0.3"으로 변경합니다. - Node.js typings에 대한 개발자 종속성을
"@types/node": "^6.0.40"으로 추가합니다. - 확장 프로그램에 Mocha 테스트가 있는 경우 개발자 종속성을 최소 Mocha 버전 2.3.3으로 변경합니다.
- Mocha typings에 대한 개발자 종속성을
"@types/mocha": "^2.2.32"로 추가합니다. - 스크립트 섹션에서
compile스크립트를"compile": "tsc -watch -p ./"로,vscode:prepublish를"vscode:prepublish": "tsc -p ./"로 교체합니다.
devDependencies 섹션은 다음과 같아야 합니다.
"devDependencies": {
"typescript": "^2.0.3",
"vscode": "^1.0.0", // Or a higher version if necessary
"mocha": "^2.3.3",
"@types/node": "^6.0.40",
"@types/mocha": "^2.2.32"
}
scripts 섹션은 다음과 같아야 합니다.
"scripts": {
"vscode:prepublish": "tsc -p ./",
"compile": "tsc -watch -p ./",
"postinstall": "node ./node_modules/vscode/bin/install"
}
tsconfig.json파일을 열고"noLib": true줄을"lib": [ "ES6" ]으로,"target": "ES5"줄을"target": "ES6"으로 교체합니다.
파일은 다음과 같아야 합니다.
{
"compilerOptions": {
"module": "CommonJS",
"target": "ES6",
"outDir": "out",
"lib": ["ES6"],
"sourceMap": true,
"rootDir": "."
},
"exclude": ["node_modules", ".vscode-test"]
}
그런 다음 작업 영역에서 typings 폴더를 삭제하고 터미널에서 npm install을 실행합니다.
JavaScript 작성
Yeoman 생성기도 JavaScript 작성을 돕기 위해 새로운 TypeScript 2.0.x 기능을 활용하도록 업데이트되었습니다. 기존 확장을 JavaScript 작성을 위해 TypeScript 2.0.3을 사용하도록 마이그레이션하려면 다음을 수행하십시오.
package.json 파일을 열고 다음 변경 사항을 적용합니다.
- TypeScript 개발자 종속성
"typescript": "^2.0.3"을 추가합니다. - Node.js typings에 대한 개발자 종속성을
"@types/node": "^6.0.40"으로 추가합니다. - 확장 프로그램에 Mocha 테스트가 있는 경우 개발자 종속성을 최소 Mocha 버전 2.3.3으로 변경합니다.
- Mocha typings에 대한 개발자 종속성을
"@types/mocha": "^2.2.32"로 추가합니다. - JavaScript 소스 코드 린팅을 위해 ESLint를 사용하는 것도 좋습니다. 이를 위해 다음 항목을 개발자 종속성으로 추가합니다:
"eslint": "^3.6.0". 또한 ESLint 확장 프로그램 설치를 권장합니다.
devDependencies 섹션은 이제 다음과 같아야 합니다.
"devDependencies": {
"typescript": "^2.0.3",
"vscode": "^1.0.0", // Or a higher version if necessary
"mocha": "^2.3.3",
"eslint": "^3.6.0",
"@types/node": "^6.0.40",
"@types/mocha": "^2.2.32"
}
jsconfig.json파일을 열고"noLib": true줄을"lib": [ "ES6" ]으로,"target": "ES5"줄을"target": "ES6"으로 교체합니다.
파일은 다음과 같아야 합니다.
{
"compilerOptions": {
"module": "CommonJS",
"target": "ES6",
"lib": ["ES6"]
},
"exclude": ["node_modules"]
}
대상은 ES6으로 설정되어 있지만 require 문을 사용하여 다른 모듈을 가져와야 합니다. Node.js는 아직 ES2015 모듈을 지원하지 않습니다.
새로운 API
-
문서가 디스크에 저장되기 전에 발생하는
onWillSaveTextDocument이벤트를 추가했습니다. 이를 통해 확장 프로그램은 저장 전에 문서를 변경할 수 있으며, "저장 시 사용되지 않는 가져오기 제거", "마지막 줄 끝 문자 삽입" 등과 같은 기능을 사용할 수 있습니다. -
이제
WorkspaceConfiguration#update를 통해 확장 프로그램이 구성 옵션을 추가/업데이트/제거할 수 있습니다. 이는 편집기 및 확장 프로그램 구성을 용이하게 할 것입니다. 예를 들어, 확장 프로그램은 코드 동작을 통해 린터를 경고에서 구성할 수 있습니다. -
Terminal#processId는 터미널의 셸 프로세스(예: bash 또는 cmd)의 프로세스 ID를 포함하는Thenable<number>를 반환합니다. -
window.createTerminal은 이제 셸의 경로와 인수를 설정하는 매개변수를 포함합니다. 이를 통해 확장 프로그램은 선택한 셸(예: Python 또는 PowerShell REPL)을 일관되게 시작할 수 있습니다. -
window.onDidCloseTerminal은 확장 프로그램이 사용자가 터미널을 닫을 때 쉽게 추적할 수 있도록 하는 새로운 이벤트입니다. 현재 API의 다른 부분과 마찬가지로 API에서 생성된 터미널로만 제한됩니다.
호환성 변경: 메시지의 버튼 순서
showInformationMessage, showWarningMessage 및 showErrorMessage 메서드를 사용할 때 메시지 옆에 작업으로 표시할 문자열 세트를 항상 전달할 수 있었습니다. 이전에는 메시지 순서가 반전되어 첫 번째로 전달한 작업이 마지막에 표시되었습니다. 이번 릴리스에서 이 예기치 않은 동작을 수정했으며 이제 작업이 순서대로 표시됩니다. 이 API 사용에 영향을 받는 확장을 확인하세요. 새로운 동작이 더 자연스럽다고 생각하므로 이전 동작을 유지하는 코드는 추가하지 않았습니다.
호환성 변경: 터미널은 백그라운드에서 생성됩니다.
API 문서에 언급된 대로 window.createTerminal 및 Terminal.sendText는 이제 백그라운드에서 생성됩니다. 따라서 확장 프로그램이 터미널 패널에 터미널을 표시하려면 Terminal.show를 명시적으로 호출해야 합니다.
디버그 확장 프로그램 개발
VS Code 디버그 프로토콜
VS Code 디버그 프로토콜 사양은 이제 TypeScript 정의 파일 대신 언어 중립 JSON 스키마로 유지 관리됩니다. 이 스키마를 사용하여 특정 언어에 대한 클라이언트 또는 서버 라이브러리를 자동으로 생성할 수 있습니다. 프로젝트 vscode-debugadapter-node에는 스키마에서 TypeScript d.ts를 생성하는 간단한 프로그램이 포함되어 있습니다. 이 프로그램은 다른 언어의 시작점으로 사용할 수 있습니다.
'runInTerminal' 요청에 대한 외부 터미널 지원
디버그 어댑터는 이제 runInTerminal 요청을 통해 디버그 대상을 외부 터미널에서 쉽게 실행하고 kind 매개변수에 external 값을 전달할 수 있습니다. 외부 터미널은 통합 터미널의 대안이며 대화형 터미널에서 읽거나 실행 중인 터미널에 출력을 제어해야 하는 명령줄 응용 프로그램 개발을 지원합니다. runInTerminal을 호출하기 전에 initialize 요청에 전달된 인수에 supportsRunInTerminalRequest 속성이 있고 그 값이 true인지 확인하여 프런트엔드 클라이언트가 이를 지원하는지 확인해야 합니다.
명령으로 제공된 초기 구성
이제 디버그 어댑터가 package.json 파일의 debuggers 기여도에 대한 initialConfigurations 속성 값으로 명령 이름을 지정할 수 있습니다. 그런 다음 디버그 어댑터 확장은 지정된 명령을 등록할 수 있으며, 이 명령은 launch.json 파일이 처음 생성될 때 호출됩니다. 명령은 launch.json 파일의 초기 내용을 반환해야 합니다. 이를 통해 디버그 어댑터는 launch.json을 사용자 지정하는 데 더 많은 유연성을 가질 수 있습니다. 예제 mock debug는 이를 보여줍니다: 'initialConfigurations' 기여 및 명령 등록.
디버그 프로토콜 추가 사항
디버그 어댑터는 이제 중단점에 대한 '히트 수' 지원을 구현할 수 있습니다. 이를 통해 사용자는 중단점이 '깨지는' 실행 전에 무시할 히트 수를 지정할 수 있습니다. SourceBreakpoint 및 FunctionBreakpoint 유형은 이제 디버그 어댑터에 히트 수 표현식을 전달하기 위한 선택적 속성 hitCondition을 지원합니다. VS Code에서 이 기능의 UI를 활성화하려면 디버그 어댑터가 supportsHitConditionalBreakpoints 기능을 true로 설정해야 합니다.
참고: 9월 릴리스에서는 VS Code가 히트 수 조건 편집을 위한 UI를 구현하지 않습니다.
기타
탭이 비활성화된 경우 더러운 표시기의 새 위치
탭(탭 헤더)이 비활성화된 경우 더러운(저장되지 않은 파일) 표시기를 닫기 버튼으로 이동하기로 결정했습니다. 이렇게 하면 탭이 활성화되었을 때(예: 열린 편집기 내) 닫기 버튼을 더러운 표시기로 바꾸는 다른 위치와 경험이 일관됩니다.

Electron 업데이트
이번 릴리스에서는 Electron 프레임워크를 대폭 업데이트하기로 결정했습니다. 이제 버전 1.3.7로 실행되며, 이는 Chrome 렌더링 엔진(49에서 52)과 Node.js(5.10.0에서 6.5.0)에서 큰 버전 증가를 가져옵니다. 이는 또한 모든 확장 프로그램이 이 VS Code 릴리스에서 실행될 때 전체 Node.js 6.5.0 런타임을 기대할 수 있음을 의미합니다. Node.js의 변경 사항 전체 목록은 Node.js 변경 로그를 참조하십시오.
참고: 확장 프로그램에서 네이티브
npm모듈을 사용하는 것은 권장하지 않습니다. 그러나 네이티브 모듈을 사용하는 확장 프로그램을 작성했다면 모든 모듈을 다시 컴파일해야 합니다.
손상된 설치 감지
손상된 VS Code 설치로 인해 궁극적으로 발생한 VS Code 문제 조사에 많은 시간을 할애했습니다. 일부 확장 프로그램은 VS Code 제품을 직접 수정(패치)하여 일시적(다음 업데이트까지)으로 변경하며, 이는 재현하기 어려운 문제를 야기할 수 있습니다.
따라서 디스크에서 VS Code 비트가 변경되었는지 감지하려고 시도하는 백그라운드 검사를 추가했습니다. VS Code 패치를 차단하려는 것은 아니지만, VS Code를 패치하는 것은 지원되지 않는 버전을 실행하고 있음을 인지시키고 싶습니다.

내장 확장 프로그램
이제 VS Code와 함께 선택한 Marketplace 확장 프로그램을 번들로 묶을 수 있습니다. 이러한 확장 프로그램은 *내장* 확장 프로그램으로 표시됩니다. 이를 통해 번들 확장 프로그램 개발을 VS Code 핵심 개발과 분리할 수 있습니다.

이슈 보고 개선
이와 관련하여 설치된 확장 프로그램으로 인해 발생하는 문제를 자주 조사합니다. 이러한 조사에 도움을 주기 위해 도움말 > 이슈 보고 작업을 확장 프로그램 목록으로 시드하여 이슈 설명을 보강했습니다.
문제를 보고할 때 이 작업을 사용해 주시면 문제를 추적하는 데 더 많은 정보를 제공하여 궁극적으로 문제를 더 빨리 해결해 드릴 수 있습니다.
macOS Sierra 지원
Apple이 최근 macOS Sierra의 최종 버전을 출시했으며 Electron 업데이트를 통해 Retina 디스플레이에서 폰트와 아이콘이 선명하게 보이지 않는 몇 가지 문제를 해결할 수 있었습니다. 그러나 일부 사용자는 편집기에서 심각한 백그라운드 아티팩트를 보고 있으며, 이는 Chrome 관련 문제이며 사용자 지정 색상 프로필을 사용하는 경우 발생하는 것으로 보입니다. 해결 방법이 있습니다. GPU 래스터화를 강제로 사용하여 VS Code를 실행하면 이 문제를 완화할 수 있습니다.
code --force-gpu-rasterization
새로운 명령
| 키 | 명령 | 명령 ID |
|---|---|---|
| 검색 | ||
| ↓ (Windows, Linux Down) | 다음 검색어 | history.showNext |
| ↑ (Windows, Linux Up) | 이전 검색어 | history.showPrevious |
| ⌥⌘C (Windows, Linux Alt+C) | 대소문자 구분 토글 | toggleSearchCaseSensitive |
| ⌥⌘R (Windows, Linux Alt+R) | 정규식 토글 | toggleSearchRegex |
| ⌥⌘W (Windows, Linux Alt+W) | 전체 단어 토글 | toggleSearchWholeWord |
| 통합 터미널 | ||
| PageUp (Windows, Linux Shift+PageUp) | 페이지 위로 스크롤 | workbench.action.terminal.scrollUpPage |
| PageDown (Windows, Linux Shift+PageDown) | 페이지 아래로 스크롤 | workbench.action.terminal.scrollDownPage |
할당되지 않음 |
터미널 지우기 | workbench.action.terminal.clear |
| 확장 | ||
할당되지 않음 |
모든 확장 프로그램 업데이트 | workbench.extensions.action.updateAllExtensions |
할당되지 않음 |
확장 프로그램 폴더 열기 | workbench.extensions.action.openExtensionsFolder |
| 탐색 | ||
할당되지 않음 |
활성 편집기 그룹에 포커스 | workbench.action.focusActiveEditorGroup |
할당되지 않음 |
창(인스턴스) 전환 | workbench.action.switchWindow |
| 도움말 | ||
할당되지 않음 |
릴리스 정보 표시 | update.showCurrentReleaseNotes |
할당되지 않음 |
이슈 보고 | workbench.action.reportIssues |
주요 변경 사항
- 241: Windows: 최근 항목 범주에서 파일 및 폴더가 열리지 않음
- 7470: 파일 변경이 없어도 저장 - Nodemon, Gulp, Chokidar 및 기타 파일 감시자 재시작
- 7817: oh-my-zsh에서 통합 터미널 스크롤이 작동하지 않음
- 7951: 디스크에서 변경된 이미지가 업데이트되지 않음
- 8819: 파일 > 최근 항목 열기에서 Ctrl+클릭으로 새 창에서 열기 허용
- 9354: 파일을 영구적으로 제거하는 기능 (휴지통 건너뛰기)
- 9448: Windows의 "새 명령 프롬프트 열기" 명령에서 드라이브 문자 소문자
- 11049: 외부 명령을 실행하면 통합 터미널에서 텍스트 커서 깜박임이 중지됨
- 11129: Mac에서 통합 터미널 위로 커서를 가져가면 대비가 낮은 커서가 표시됨
- 11244: 통합 터미널에서 vi를 종료한 후 스크롤이 사라짐
- 11275: Terminal.dispose는 패널이 숨겨져 있으면 패널을 표시하지 않아야 함
- 11318 & 8365: 검색 및 문제 보기에서 줄 강조 표시가 다른 보기와 일관됨.
- 11727: 선언으로 이동은 현재 커서를 탐색 기록에 저장해야 함
- 11976: MarkerService 및 ProblemsView는 확장성이 떨어지고 UI 스레드를 차단함
- 12574: 터미널 스크롤 막대가 숨기고 표시한 후 상단에 나타남
이것은 1.6 업데이트에 대한 닫힌 버그 및 닫힌 기능 요청입니다.
확장 프로그램에 대한 기여
저희 팀은 여러 VS Code 확장 프로그램을 유지 관리하거나 기여합니다. 가장 주목할 만한 것은
감사합니다
마지막으로, VS Code를 더욱 발전시키는 데 도움을 준 다음 분들께 진심으로 감사드립니다.
- Fred Bricon (@fbricon): 로그 메시지의 오타 수정 PR vscode-languageserver-node#92
- Henning Dieterichs (@hediet): 비규범적 불일치 PR language-server-protocol#68
- Luke Persola (@Persola): README 문법 수정/재구성 PR language-server-protocol#56
- Amadeusz Leonardo Juskowiak (@alfanick): 상대 줄 번호 지원 PR #12055
- Artem Govorov (@ArtemGovorov): 출력 지우기 이벤트 시 버퍼링된 출력 지우기 PR #12057
- Logan Fleur (@effleurager): git 작업 오류의 오타 수정 PR #12419
- Jun Han (@formulahendry): #9482 해결: 태그 간 자동 닫기 쌍 PR #9535
- Kei Son (@heycalmdown)
- Yuki Ueda (@Ikuyadeu): workerMainCompatibility.html #11306 제거 PR #11369
- @marktrz
- Sam El-Husseini (@microsoftsam): Mac에서 확대/축소에 Cmd+스크롤 사용 PR #12477
- Denis Malinochkin (@mrmlnc): 언어 모드 드롭다운에 언어 식별자 표시 PR #12031
- Dmitry Nikitenko (@nDmitry) 및 @FichteFoll: YAML 문법 재작업 PR #11666
- Nic Holthaus (@nholthaus): KDE-plasma에 대한 기본 터미널로
konsole추가 PR #11452 - Paul Oppenheim (@pauloppenheim): vscode-linux-*-build-deb - 예상 권한 비트 PR #11558
- @Romanito: Windows 탐색기에서 드라이브 루트에 "Code로 열기" 활성화 PR #11870
- @sprinkle131313: Linux 및 macOS에 대한 디버거 구성 시작 수정. PR #11092
- @ted-piotrowski: ARM 시스템을 대상으로 하는 gulp 메서드 수정 PR #12486
- Vincenzo Chianese (@XVincentX)
- Eklavya @eklavyamirani Markdown 구문 강조 표시가 대체 헤더 스타일을 지원하도록 함 PR #11066