2019년 10월 (버전 1.40)
업데이트 1.40.1: 이번 업데이트는 다음 이슈를 해결했습니다.
업데이트 1.40.2: 이번 업데이트는 다음 이슈를 해결했습니다.
다운로드: Windows: x64 | Mac: Intel | Linux: deb rpm tarball snap
Visual Studio Code의 2019년 10월 릴리스에 오신 것을 환영합니다. 10월 반복 계획에서 발표한 바와 같이, GitHub 이슈 및 풀 리퀘스트의 정리 작업에 집중했으며, 이는 이슈 정리 가이드에 문서화되어 있습니다. VS Code의 모든 리포지토리에서 총 4622개의 이슈를 닫았습니다(트리아지 또는 수정 완료). 이는 2018년 9월의 마지막 정리 주기에서 닫았던 3918개의 이슈보다 많은 수입니다. 이슈를 닫는 동안 사용자는 2195개의 새 이슈를 생성했습니다. 결과적으로 이슈가 2427개 순감소했습니다. 주요 vscode 리포지토리에는 현재 2162개의 열린 기능 요청과 725개의 열린 버그가 있습니다. 또한 287개의 풀 리퀘스트를 닫았습니다. 이러한 노력의 일환으로 프로세스를 조정하고 이슈 트리아징 워크플로를 업데이트했습니다.
작년과 마찬가지로, Benjamin Lannon의 라이브 트래커를 사용하여 진행 상황을 추적했습니다.

이번 정리 마일스톤 동안 여러 기능 요청 및 커뮤니티 풀 리퀘스트도 처리했습니다. 새로운 기능과 설정에 대해 계속 읽어보세요.
워크벤치
활동 표시줄 표시기
활동 표시줄의 활성 항목을 더 잘 돋보이게 하고 가독성을 높이기 위해 새로운 표시기를 도입했습니다. 또한 비활성 전경색을 조정하여 활성 요소와의 대비를 더 강화했습니다.

새로운 색상 토큰인 activityBar.activeBorder를 통해 활성 표시기를 제어할 수 있습니다. 또한 활성 요소에 대한 선택적 배경색인 activityBar.activeBackground를 도입했으며, 이를 구성하면 다음과 같이 보일 수 있습니다.

테마 가능한 창 테두리
VS Code 창 주위에 테두리를 제공하기 위해 두 개의 새 테마 색상인 window.activeBorder와 window.inactiveBorder를 도입했습니다. window.activeBorder는 활성(포커스된) 창에 적용되고, window.inactiveBorder는 비활성(포커스되지 않은) 창에 적용됩니다. 이 새 색상은 어떤 색상에서도 상속되지 않으므로 테마 또는 workbench.colorCustomizations 설정을 통해 제공해야 합니다. 색상이 하나만 지정된 경우 해당 색상의 테두리가 활성 및 비활성 창 모두에 적용됩니다.

목록 및 트리 키보드 스크롤
이제 키보드를 사용하여 목록 및 트리를 스크롤하려면 ⌘↑ (Windows, Linux Ctrl+Up) 및 ⌘↓ (Windows, Linux Ctrl+Down)를 누를 수 있습니다.
젠 모드에서의 알림 감소
젠 모드 사용 중에는 오류를 알리는 알림이 아니면 알림 토스트가 더 이상 방해가 되지 않습니다. 새 zenMode.silentNotifications 설정을 사용하여 이 동작을 제어할 수 있습니다. 오른쪽 하단 모서리에 있는 알림 아이콘을 클릭하여 상태 표시줄에서 항상 모든 알림에 액세스할 수 있습니다.
개요 및 탐색 경로에 대한 유형 필터
개요 보기와 탐색 경로 탐색에 표시되는 심볼을 구성하는 새 설정이 있습니다. 이 설정은 outline.show{symbol type} 및 breadcrumbs.show{symbol type}입니다. 예를 들어 outline.showVariables, outline.showFunctions 등입니다.

위 스크린샷은 로컬 변수를 표시하지 않도록 구성된 개요 보기를 보여주며, 변수 hidden이 표시되지 않는 것을 볼 수 있습니다.
참고로, 심볼의 유형을 할당하는 것은 언어 확장에 달려 있습니다. 개요 보기에서 심볼 레이블에 마우스를 올리면 사용되는 심볼 유형(괄호 안)을 볼 수 있습니다.
편집기 분할 시 크기 조정 동작 제어
새 설정 workbench.editor.splitSizing은 편집기를 분할할 때 편집기의 레이아웃을 제어합니다. 기본적으로 아래 그림과 같이 모든 편집기 간에 크기가 균등하게 분배됩니다.

이 설정을 split으로 변경하면 현재 편집기가 반으로 분할되고 다른 편집기의 크기에는 영향을 주지 않습니다.

GPU 가속 비활성화
GPU가 VS Code UI 렌더링에 사용되는 방식과 관련된 문제 보고를 받았습니다. 이 사용자들은 --disable-gpu 명령줄 인수를 추가하여 VS Code를 실행할 때 훨씬 더 나은 경험을 얻습니다. 이 인수를 사용하여 실행하면 GPU 하드웨어 가속이 비활성화되고 소프트웨어 렌더러로 대체됩니다.
더 쉽게 사용하기 위해 이 플래그를 설정으로 추가하여 매번 명령줄에서 전달할 필요가 없도록 할 수 있습니다.
이 플래그를 추가하려면
- 명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))를 엽니다.
- Preferences: Configure Runtime Arguments 명령을 실행합니다.
- 이 명령은 런타임 인수를 구성하기 위해
argv.json파일을 엽니다. 이미 기본 인수 일부가 표시될 수 있습니다. "disable-hardware-acceleration": true를 추가합니다.- VS Code를 다시 시작합니다.
참고: 문제가 발생하는 경우를 제외하고는 이 설정을 사용하지 마십시오!
편집기
언어별 files.eol
files.eol 설정은 이제 언어별로 설정할 수 있습니다. 예를 들어, 'mylanguage' 언어 식별자의 모든 파일이 새 파일 전체에 대해 기본 줄 끝 시퀀스로 \n을 사용하도록 정의할 수 있습니다.
"[mylanguage]": {
"files.eol": "\n"
}
줄 끝 시퀀스는 새 파일에 사용됩니다. 기존 파일의 경우 현재 줄 끝 시퀀스는 항상 유지됩니다. 기존 파일의 줄 끝 시퀀스를 변경하려면 **줄 끝 시퀀스 변경** 명령을 사용하십시오.
files.eol 언어 설정을 사용하면 'shellscript'의 기본 줄 끝 시퀀스가 이제 \n으로 정의됩니다.
미니맵 스케일링 및 향상된 글꼴 렌더링
새 설정 editor.minimap.scale은 특히 고 DPI 또는 울트라 와이드 디스플레이에 유용한 여러 상수 값 중 하나로 미니맵의 크기를 구성합니다. 또한 미니맵 글꼴 렌더링이 더 부드럽고 명확해졌습니다.

키보드를 통한 정의 미리 보기 호버
정의 미리 보기 호버 위젯에 대한 접근성을 높이기 위한 새 명령 정의 미리 보기 호버 표시가 있습니다. 이 위젯은 마우스로 심볼에 호버하고 플랫폼 및 구성에 따라 수정자 키를 누르면 트리거할 수 있습니다. 이전에는 호버 표시 명령만 제공되었으며, 이는 마우스 커서를 심볼에 호버하는 것과 동일합니다. 이제 정의 미리 보기 호버 표시를 사용하면 키보드를 통해 자세한 호버 정보를 표시할 수 있습니다.

괄호 일치 개선
이전에는 VS Code에서 커서가 괄호 문자 옆에 있을 때만 일치하는 괄호를 강조 표시했습니다. 이제 VS Code는 포함된 괄호가 있으면 항상 강조 표시합니다.

또한 괄호로 이동 및 괄호까지 선택 동작을 포함된 괄호를 사용하도록 조정했습니다.
선택 영역 복제
선택 영역 복제라는 새 동작을 추가했습니다. 이 동작이 실행되면 현재 선택 영역이 복제되고 결과가 선택됩니다. 선택 영역이 없으면 현재 줄이 복제되며, 모두 시스템 클립보드에 쓰지 않습니다.
글꼴 기능 설정
글꼴 기능에 대한 더 세분화된 제어가 가능해졌습니다. "editor.fontLigatures": true를 구성하면 VS Code는 liga와 calt를 켭니다. 하지만 일부 글꼴에는 Fira Code에서 사용하는 스타일 세트와 같은 더 많은 설정이 있습니다.
이제 이러한 글꼴 기능을 명시적으로 제어할 수 있습니다. 예를 들어
"editor.fontFamily": "Fira Code",
"editor.fontLigatures": true,
"[javascript]": {
"editor.fontLigatures": "'ss02', 'ss19'",
},
위 설정은 편집기가 Fira Code 글꼴 패밀리를 사용하도록, 모든 언어에 대해 글꼴 리거처를 켜고, JavaScript 파일에서는 '가로 막대'(ss02) 및 '점선 0'(ss19) 글꼴 기능 설정을 활성화하도록 구성합니다. 이를 통해 JavaScript에서 >= 리거처가 가로 막대로 렌더링되고 0이 내부의 점으로 렌더링됩니다.

유니코드 결합 문자 처리 개선
유니코드 결합 문자 처리가 개선되었으며, 이러한 시퀀스를 원자 문자(커서 이동, 편집 작업 또는 블록 커서 렌더링)로 처리합니다. 이는 블록 커서 스타일과 이전/이후 애니메이션을 사용하여 가장 잘 보여줄 수 있습니다.
이전

이후

관련 변경 사항으로, 상태 표시줄의 Col 섹션에 유니코드 포인트 수가 표시됩니다.
커서 다시 실행
소프트 실행 취소 명령이 커서 실행 취소로 이름이 변경되었습니다. 이 동작은 예를 들어 ⌘D (Windows, Linux Ctrl+D)를 사용하여 다음 일치를 선택하고 한 번 지나친 경우에 유용합니다. 마지막 커서 상태 변경만 실행 취소하기 때문입니다. 또한, 이전에 실행 취소된 커서 상태 변경을 다시 실행하는 커서 다시 실행이 추가되었습니다.
차이점 편집기 개선
내장 차이점 계산은 5초의 하드코딩된 타임아웃이 있어, 이 시간이 지나면 포기하고 최소가 아닌 차이점을 반환했습니다. 이제 "diffEditor.maxComputationTime"을 사용하여 이 타임아웃을 구성할 수 있으며, 타임아웃을 0으로 설정하면 아무리 오래 걸리더라도 항상 최소 차이점을 계산합니다. 또한, 차이점 계산에 1초 이상 걸리면 차이점 편집기에 진행률 표시줄이 렌더링됩니다.
차이점 편집기 사용 시 혼란의 원인은 선행 또는 후행 공백만 다른 파일을 비교할 때 차이점 편집기가 공백 트리밍을 무시하도록 구성된 경우였습니다. 이로 인해 소스 제어에서는 파일이 수정된 것으로 표시되지만 차이점 편집기에서는 차이점을 렌더링하지 않았습니다. VS Code는 이제 이 경우를 감지하면 **공백 차이점 표시** 버튼을 표시하여 공백 차이점을 빠르게 표시하도록 돕습니다. 이 기능은 차이점 편집기 상단의 **선행/후행 공백 차이점 표시/무시** 명령을 사용하여 전환할 수 있습니다.

통합 터미널
이제 기본적으로 코드 지원
새 설정 terminal.integrated.allowChords(기본값 true)는 코드 키 바인딩의 일부인 키 바인딩이 평가를 위해 터미널을 건너뛰고 VS Code에서 처리되도록 허용합니다(terminal.integrated.commandsToSkipShell 허용 목록을 우회).
참고로 터미널의 키 바인딩에 대한 동일한 제한 사항이 여전히 적용됩니다. 이 평가를 할 때 가장 우선순위가 높은 코드 키 바인딩이 고려됩니다.
예를 들어, 확장 프로그램이 키 바인딩 Ctrl+M A를 제공하고 keybindings.json 파일에 다음과 같이 정의되어 있다면
[
{ "key": "ctrl+m a", "command": "workbench.action.terminal.toggleTerminal" },
{ "key": "ctrl+m a", "command": "workbench.action.focusLastEditorGroup" }
]
Ctrl+M A는 마지막 키 바인딩이므로 workbench.action.focusLastEditorGroup 명령이 실행됩니다. 사용자 키 바인딩이 확장 프로그램에서 제공하는 키 바인딩보다 우선순위가 높습니다.
빠른 스크롤 지원
터미널에서 이제 Alt 키와 마우스 휠을 함께 사용하여 editor.fastScrollSensitivity 설정에 정의된 배율에 따라 더 빠르게 스크롤할 수 있습니다.
오른쪽 클릭 동작에 대한 새 "붙여넣기" 옵션
터미널에서 오른쪽 클릭 시 항상 붙여넣도록 rightClickBehavior 설정에 새 옵션이 추가되었습니다.
"terminal.integrated.rightClickBehavior": "paste"
두 번 클릭하여 단어 선택 시 더 많은 구분 기호 사용
이제 ,, :, ; 문자가 터미널에서 두 번 클릭하여 단어를 선택할 때 단어 구분 기호로 간주됩니다.
심볼릭 링크 cwd는 더 이상 확인되지 않습니다.
터미널의 초기 작업 디렉터리가 심볼릭 링크로 설정된 경우, 심볼릭 링크는 터미널에 유지됩니다.
스크롤 위치에서 명령 탐색 작동
명령 탐색을 사용하면 터미널에서 실행된 명령 간에 이동하거나 선택할 수 있습니다. 이제 터미널의 스크롤 위치를 고려하므로 스크롤하고 이전 명령을 찾으면 터미널이 터미널 뷰포트에서 위로 스크롤됩니다(이전에는 바닥에서 스크롤되었습니다).

명령 탐색은 기본적으로 macOS에서만 Cmd+Up/Down으로 바인딩되며, 명령 선택은 Cmd+Shift+Up/Down으로 바인딩됩니다.
Windows 또는 Linux에서 이 기능을 사용하려면 다음과 같은 예제 키 바인딩을 참조하십시오.
{
// Terminal command tracking on Windows and Linux
{ "key": "ctrl+up", "command": "workbench.action.terminal.scrollToPreviousCommand", "when": "terminalFocus" },
{ "key": "ctrl+down", "command": "workbench.action.terminal.scrollToNextCommand", "when": "terminalFocus" },
{ "key": "ctrl+shift+up", "command": "workbench.action.terminal.selectToPreviousCommand", "when": "terminalFocus" },
{ "key": "ctrl+shift+down", "command": "workbench.action.terminal.selectToNextCommand", "when": "terminalFocus" },
}
작업
작업 빠른 선택 목록
작업: 작업 구성 명령은 이제 정의된 작업이 하나뿐인 경우 항상 빠른 선택 목록을 건너뜁니다. 이 동작을 작업: 작업 실행 및 기타 작업 빠른 선택으로 확장하려면 task.quickOpen.skip 설정을 true로 설정할 수 있습니다.
새 설정 task.quickOpen.history는 작업 빠른 선택에 **최근 사용한** 작업으로 표시되는 작업 수를 제어합니다. 최근 작업 섹션을 비활성화하려면 task.quickOpen.history를 0으로 설정하십시오.
detail 속성을 가진 작업은 이제 일부 작업 목록에 표시됩니다. task.quickOpen.detail을 false로 설정하면 작업 빠른 선택에서 세부 정보를 끌 수 있습니다.
폴더에 대한 NPM 스크립트 실행 옵션
npm.enableRunFromFolder 설정이 활성화되면 파일 탐색기의 컨텍스트 메뉴에 폴더가 선택될 때 폴더에서 NPM 스크립트 실행... 명령이 표시됩니다. 이 명령은 해당 폴더에 포함된 NPM 스크립트의 빠른 선택 목록을 표시하고 스크립트를 작업으로 실행하도록 선택할 수 있습니다.
느린 작업 공급자 경고
작업 공급자가 느리게 실행될 때, 지연을 피하는 방법에 대한 제안을 제공하는 경고가 표시됩니다. 개별 작업 유형에 대해 경고를 비활성화하거나, task.slowProviderWarning을 false로 설정하여 모든 작업에 대해 경고를 비활성화할 수 있습니다.

작업 자동 감지 비활성화
원하는 모든 작업이 tasks.json 파일에 정의되어 있다면, 작업을 실행할 때 성능을 향상시키기 위해 모든 확장 프로그램 작업 공급자를 비활성화하고 싶을 수 있습니다. 개별 확장 프로그램이 작업 공급자를 비활성화하는 설정을 제공하는 것은 좋은 관행이지만, 이제 task.autoDetect를 off로 설정하여 모든 작업 공급자를 비활성화할 수 있습니다.
문제 해결사 프롬프트
이전에는 문제 해결사가 없는 작업은 문제 해결사 프롬프트를 건너뛰려면 tasks.json에 빈 문제 해결사를 설정해야 했습니다. 이제 task.problemMatchers.neverPrompt를 사용하여 모든 작업 또는 특정 작업 유형에 대해 문제 해결사 프롬프트를 비활성화할 수 있습니다. 문제 해결사 프롬프트에 프롬프트를 비활성화하는 새 옵션도 있습니다.

소스 제어
활성 편집기 변경 시 파일 강조 표시
소스 제어 보기가 이제 트리/목록 보기에서 활성 편집기 파일을 자동으로 강조 표시합니다.

Git: 추적되지 않은 파일 관리 개선
이제 Git: 추적되지 않은 변경 사항 설정을 사용하여 추적되지 않은 파일을 별도로 관리할 수 있습니다. 소스 제어 보기에 추적되지 않은 파일을 별도의 그룹으로 보려면 separate 옵션을 선택하십시오. 보이지 않게 하려면 hidden을 선택하십시오. 기본 커밋 동작은 이 설정에 맞춰 조정되며, mixed 설정 값을 사용할 때만 추적되지 않은 변경 사항을 커밋에 포함합니다.

Git: 병합 커밋 시 자동 커밋 메시지
VS Code가 Git 병합 커밋 중간임을 감지하면 Git의 기본 커밋 메시지로 커밋 입력 상자를 자동으로 채웁니다.

Git: 탐색기에서 보기
이제 소스 제어 보기에서 Git 리포지토리의 파일을 파일 탐색기에서 표시하는 컨텍스트 메뉴 작업 탐색기에서 보기가 있습니다.

Git: 복제 진행률
복제 작업이 이제 오른쪽 하단 알림에 진행률을 표시하는 것을 지원합니다.

디버깅
개요 눈금자에 중단점 표시 가능
큰 파일에서 중단점을 작업할 때 편의를 위해 새 설정 debug.showBreakpointsInOverviewRuler를 활성화하여 편집기의 개요 눈금자에 중단점을 표시할 수 있습니다.

복합 디버그 구성에 대한 PreLaunch 작업
오늘날 모든 디버그 구성은 preLaunchTask 속성을 통해 디버그 세션 시작 전에 실행될 작업을 지정할 수 있습니다. 이는 단일 프로그램을 디버깅할 때 잘 작동하지만, 여러 프로그램이 관련된 복합 구성을 사용할 때는 번거로워집니다.
이번 마일스톤에서는 복합 디버그 구성당 preLaunchTask 지원을 추가했습니다. 이를 통해 단일 작업으로 개별 디버그 세션이 시작되기 전에 모든 디버그 대상을 빌드할 수 있습니다. 빌드 오류 발생 시 세션이 시작되지 않습니다.

언어
CSS 미디어 쿼리 심볼
CSS/SCSS/Less 파일에서 미디어 쿼리 심볼이 이제 개요 보기, 탐색 경로, **파일 내 기호로 이동** 목록에 표시됩니다.

typescript.tsserver.maxTsServerMemory
수천 개의 파일을 포함하는 대규모 TypeScript 프로젝트로 작업하는 경우, 새 typescript.tsserver.maxTsServerMemory 설정을 사용하여 IntelliSense를 지원하는 TypeScript 서버의 최대 메모리 사용량을 늘릴 수 있습니다.
확장 프로그램 작성
vscode.env.uiKind
확장 프로그램이 어떤 UI 종류에서 실행되는지 알 수 있도록 새 API vscode.env.uiKind가 추가되었습니다. 브라우저에서 VS Code를 실행하는 것을 지원하기 위해 가능한 값은 UIKind.Web 및 UIKind.Desktop입니다.
호출 계층 구조 공급자 API
호출 계층 구조 공급자 API: CallHierarchyProvider를 완성했습니다. 이 API는 함수, 메서드 등의 호출자 및 호출 대상 함수를 찾는 호출 계층 구조 보기 기능을 지원합니다.
Task CustomExecution
CustomExecution 작업 유형 API가 완성되었습니다. 셸 또는 프로세스 작업이 적합하지 않은 경우, CustomExecution 작업을 사용하여 확장 프로그램 내에서 콜백을 실행할 수 있습니다. 자세한 내용은 작업 공급자 확장 프로그램 가이드를 참조하십시오.
디버그 API: "startDebugging" 요청의 "consoleMode" 옵션
지난 마일스톤에서 디버그 세션 계층 구조가 단일 디버그 콘솔을 공유하는지 또는 개별 콘솔을 사용하는지를 제어하는 새 제안 API를 도입했습니다. 이 API는 이제 공식적이므로 Marketplace에 게시된 확장 프로그램에서 사용할 수 있습니다.
아이콘 색상 토큰
아이콘을 위한 새 색상 토큰을 마침내 도입하게 되어 기쁩니다. 특정 영역에 점진적으로 추가하고 있으며, 다음은 첫 번째 배치입니다.
기호
이 아이콘은 개요 보기, 탐색 경로 및 제안 위젯에 표시됩니다.
symbolIcon.arrayForegroundsymbolIcon.booleanForegroundsymbolIcon.classForegroundsymbolIcon.colorForegroundsymbolIcon.constructorForegroundsymbolIcon.constantForegroundsymbolIcon.enumeratorForegroundsymbolIcon.enumeratorMemberForegroundsymbolIcon.eventForegroundsymbolIcon.fieldForegroundsymbolIcon.fileForegroundsymbolIcon.folderForegroundsymbolIcon.functionForegroundsymbolIcon.interfaceForegroundsymbolIcon.keyForegroundsymbolIcon.keywordForegroundsymbolIcon.methodForegroundsymbolIcon.moduleForegroundsymbolIcon.namespaceForegroundsymbolIcon.nullForegroundsymbolIcon.numberForegroundsymbolIcon.objectForegroundsymbolIcon.operatorForegroundsymbolIcon.packageForegroundsymbolIcon.propertyForegroundsymbolIcon.referenceForegroundsymbolIcon.snippetForegroundsymbolIcon.stringForegroundsymbolIcon.structForegroundsymbolIcon.textForegroundsymbolIcon.typeParameterForegroundsymbolIcon.unitForegroundsymbolIcon.variableForeground
![]()
문제 및 알림
문제 및 알림 아이콘의 기본 색상이 편집기 전경색을 상속하도록 설정했습니다. 따라서 해당 색상을 변경하면 다른 영역에도 상속됩니다.
![]()
문제점 패널 및 알림에 대한 아이콘 색상을 명시적으로 설정할 수도 있습니다.
problemsErrorIcon.foregroundproblemsWarningIcon.foregroundproblemsInfoIcon.foregroundnotificationsErrorIcon.foregroundnotificationsInfoIcon.foregroundnotificationsWarningIcon.foreground
전구
전구 아이콘도 테마 가능합니다.
editorLightBulb.foregroundeditorLightBulbAutoFix.foreground
![]()
vscode.env.asExternalUri
vscode.env.asExternalUri API를 사용하면 확장 프로그램이 확장 프로그램이 실행되는 위치에서 클라이언트 머신의 동일한 리소스에 대한 URI로 **외부** URI(예: http: 또는 https: URI)를 확인 수 있습니다. 이는 vscode.env.openExternal API의 동반 기능으로, 확인된 URI를 외부 프로그램을 사용하여 여는 대신 확장 프로그램에 결과를 반환합니다.
import * as vscode from 'vscode';
import * as http from 'http';
const PORT = 3000;
export function activate(context: vscode.ExtensionContext) {
startLocalServer(PORT);
context.subscriptions.push(
vscode.commands.registerCommand('example.command', async () => {
const resolved = vscode.env.asExternalUri(
vscode.Uri.parse(`https://:${PORT}`)
);
vscode.window.showInformationMessage(
`Resolved to: ${resolved} on client and copied to clipboard`
);
vscode.env.clipboard.writeText(resolved.toString());
})
);
}
function startLocalServer(port: number) {
const server = http.createServer((req, res) => {
res.end('Hello world!');
});
server.on('clientError', (err, socket) => {
socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
});
server.listen(port);
vscode.window.showInformationMessage(`Started local server on port: ${port}`);
}
http: 및 https: URI의 경우, 확장 프로그램이 클라이언트 머신에서 실행 중이면 asExternalUri는 아무 작업도 수행하지 않습니다. 그러나 확장 프로그램이 원격으로 실행 중인 경우, vscode.env.asExternalUri는 자동으로 로컬 머신에서 원격의 target으로 포트 포워딩 터널을 설정하고 터널에 대한 로컬 URI를 반환합니다.
asExternalUri가 vscode.env.uriScheme URI로 호출되면, 브라우저에서 열릴 때(예: openExternal을 통해) 등록된 URI 핸들러가 트리거되는 URI를 반환합니다.
실험적 사용자 지정 데이터 설정 및 기여 지점 제거
[html/css].experimental.customData 설정 및 contributes.[html/css].experimental.customData 기여 지점은 1.38에서 사용 중단되었고 이제 제거되었습니다. 대신 안정적인 사용자 지정 데이터 설정 및 기여 지점을 사용할 수 있습니다. 사용자 지정 데이터 형식에 대한 자세한 내용은 microsoft/vscode-custom-data 리포지토리를 참조하십시오.
extensionKind는 배열일 수 있음
package.json에서 extensionKind 속성은 확장 프로그램이 원격의 경우 어디에서 실행되어야 하는지를 나타내기 위해 "ui" 또는 "workspace" 값을 가질 수 있었습니다. 이번 릴리스에서는 extensionKind가 배열이 될 수 있습니다. 예를 들어 ["ui", "workspace"]는 확장 프로그램이 "ui" 및 "workspace" 양쪽에서 실행될 수 있으며, 설치된 경우 "ui" 측에서 실행되는 것을 선호함을 나타냅니다.
제안된 확장 API
모든 마일스톤에는 새로운 제안 API가 포함되며 확장 작성자는 이를 사용해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 기다립니다. 제안 API를 사용해 보려면 다음을 수행하세요.
- 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
- 확장의
package.json파일에 이 줄이 있어야 합니다:"enableProposedApi": true. vscode.proposed.d.ts파일의 최신 버전을 프로젝트 소스 위치로 복사합니다.
제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경이 있을 수 있으며 기존 확장을 손상시키고 싶지 않습니다.
IntelliSense 대체 모드 지원
사용자가 제안이 기존 텍스트를 대체할지 또는 삽입만 할지 결정할 수 있는 기능을 작업 중입니다. 예를 들어, con|st 내에서 console을 수락하면 console(대체) 또는 consolest(삽입)이 될 수 있습니다. 두 모드 모두 장점이 있으며, 최종적으로 현재 컨텍스트와 사용자 기본 설정에 따라 달라집니다. 이 기능을 가장 잘 작동하게 하려면 확장 프로그램에서 어떻게 해야 할지 알려줘야 합니다. 따라서 CompletionItem#range 속성에 새 유형을 추가하려고 제안합니다.
interface CompletionItem {
range?: Range | { insert: Range; replace: Range };
}
범위는 여전히 선택 사항이거나 간단한 범위일 수 있지만, 삽입 및 대체 범위를 위한 두 개의 범위가 될 수도 있습니다. 자세한 내용은 이슈 #10266을 참조하십시오.
작업 세부 정보
Task에 작업 공급자가 UI에 표시될 때 작업에 detail을 추가하는 데 사용할 수 있는 새 속성이 있습니다. tasks.json에서도 세부 속성을 사용할 수 있습니다. 내장 npm 확장 프로그램은 작업 세부 정보를 사용하여 어떤 npm 스크립트가 실행될지 표시합니다.

사용자 지정 편집기에 WebviewPanelOptions 전달 지원
이번 반복에서 사용자 지정 편집기 API 제안 작업을 계속 진행했습니다. 이제 제안된 registerWebviewEditorProvider 함수는 options 집합을 받아 사용자 지정 편집기 웹뷰에서 retainContextWhenHidden 및 기타 기능을 활성화할 수 있습니다.
export function registerWebviewEditorProvider(
viewType: string,
provider: WebviewEditorProvider,
options?: WebviewPanelOptions
): Disposable;
엔지니어링
브라우저에서 실행되는 VS Code 테스트
이제 개발 및 테스트를 위해 브라우저에서 VS Code를 실행할 수 있는 최소한의 설정이 있습니다. 브라우저 인스턴스에는 여전히 일부 기능이 누락되어 있으며 활발히 개발 중입니다.
로컬 복사본인 vscode 리포지토리에서 명령줄에서 yarn web을 실행하고 https://:8080/에 액세스하십시오. vscode 리포지토리 복제 및 빌드에 대한 자세한 내용은 설정 지침을 참조하십시오.

참고: 이 설정은 심각한 개발에 사용하지 마십시오. 의도는 커뮤니티가 VS Code에 변경 사항을 기여하여 브라우저 환경 전반을 개선할 수 있도록 하는 것입니다.
TypeScript 3.7로 VS Code 빌드
VS Code는 이제 TypeScript 3.7을 사용하여 빌드됩니다. 이는 코드베이스에서 선택적 체이닝(?.)을 사용할 수 있게 해주므로(다른 많은 개선 사항도 가져옴) 흥미로운 업데이트입니다.
오늘 JavaScript 및 TypeScript Nightly 확장 프로그램을 설치하여 VS Code에서 TypeScript 3.7 기능을 사용할 수 있습니다.
Electron 6.0 업데이트
이번 마일스톤에서 Electron 6을 VS Code에 번들링하는 탐색을 완료했으며, 이 Electron 버전이 안정 버전으로 배송된 것은 처음입니다. 이는 주요 Electron 릴리스이며 Chromium 76.0.3809.146 및 Node.js 12.4.0을 포함합니다(현재 Chromium 69 및 Node.js 10.11.0 버전에서 큰 도약입니다).
Electron 7로 업데이트하는 탐색을 시작했으며, 곧 Insiders에 푸시할 수 있기를 바랍니다.
주요 수정 사항
- 78634: 터미널 내용이 크기 조정 시 사라짐 (powershell/conpty)
- 25854: Markdown 미리 보기를 새 편집기 그룹으로 끌 수 없음
- 81824: 웹뷰 편집기가 이전 편집기 기록 열기 명령에 표시되지 않음
감사합니다
마지막으로, VS Code를 더욱 발전시키는 데 도움을 준 다음 분들께 진심으로 감사드립니다.
이슈 추적에 대한 기여
수신되는 이슈를 관리하는 데 도움이 되고 싶으시면 커뮤니티 이슈 추적 페이지를 참조하세요.
vscode 기여
- Adam Burgess (@adamburgess): 터미널에 오른쪽 클릭 시 붙여넣기 옵션 추가 PR #81448
- André Casal (@andrecasal): git.confirmEmptyCommits 설명 명확화 PR #83257
- Anirudh Rayabharam (@anirudhrb)
- Anthony Dresser (@anthonydresser): SQL 언어 구문 업데이트 PR #77601
- Brian Malehorn (@bmalehorn): search: 사용되지 않는 구성 설정 제거 PR #82019
- Callum Mellor-Reed (@callummr): 편집기 복원 시 올바른 SCM 리포지토리 집중 PR #79566
- Dave Alongi (@dalongi): product.json에서 문제 보고 기능이 비활성화된 경우 도움말 > 문제 보고 메뉴 항목 숨기기 PR #83561
- Dhairya Nadapara (@dhairyanadapara): 분할 창 옵션을 설정에 추가 PR #82888
- DiamondYuan (@DiamondYuan): 명령 팔레트에서 VS Code 업데이트 지원 PR #77515
- Drew Cross (@drew212): 문제 76195에 대한 git stash drop 추가 PR #76342
- Edward Thomson (@ethomson)
- Alexandr Fadeev (@fadeevab): 다음을 지원하도록 업데이트된 스키마에 대한 Makefile 테스트 케이스: var:=$(val:.c=.o) PR #83121
- Andrew Wong (@featherbear): 존재하지 않는 명령줄 인수 검사 변경 PR #83311
- Freddy Robinson (@frobinsonj)
- @gawicks: 병합 충돌 해결 시 기본 메시지 수락 허용 PR #66522
- John Murray (@gjsjohnmurray): 포맷터 관련 메시지의 하이픈 제거 PR #83538
- @HonkingGoose: Emmet 치트 시트 링크에 HTTPS 사용 PR #82754
- Hung-Wei Hung (@hunghw): #79428 수정 - 스니펫에 "$WORKSPACE_FOLDER" 추가 PR #79764
- Andrew Liu (@hypercubestart): 30419 및 80649 수정 - 최근 작업 수 설정 허용 PR #82757
- Andrii Dieiev (@IllusionMH): 전체 단어 일치와 정규식이 함께 사용될 때 PCRE2로 대체 PR #82072
- @Jakobeha: 추적되지 않은 파일을 분리하거나 숨기는 구성 옵션 (주소 #35480) PR #80083
- Jean Pierre (@jeanp413)
- Jakob Fahr (@jfhr): #82199 수정, 밝은 테마 마크다운 미리보기에서 숫자 읽기 어려움 PR #82450
- Liming Jin (@jinliming2): fix: IPv6 형식으로 HTTP 프록시 주소를 입력할 때 오류 PR #77260
- Jon Bockhorst (@jmbockhorst)
- Jonas Platte (@jplatte): linux/bin/code.sh: which 대신 command -v 사용 PR #82097
- JavaScript Joe (@jsjoeio): fix: ExtensionSuggestions에서 TypeScript 제거 PR #82125
- Jesús Alonso Abad (@Kencho): POD 블록을 접기 위한 Perl5 지원 PR #71448
- Nikolay Kondratyev (@kondratyev-nv)
- Kryštof Řeháček (@Krystofee): RANDOM, RANDOM_HEX 스니펫 변수 추가 PR #82529
- Kumar Harsh (@kumarharsh): fix(workbench): 최근 사용한 작업 비활성화 기본 설정 추가 PR #61994
- Lio李欧 (@lionello): StartFindWithSelectionAction는 찾기 위젯에 초점을 맞추지 않아야 함 PR #63176
- @MartinBrathen: 수정됨: 포커스 해제 시 첫 번째 클릭에 이미지 미리보기가 확대되지 않아야 함 PR #82074
- Per Persson (@md2perpe): 누락된 전치사 추가 PR #82613
- Niklas Mollenhauer (@nikeee): 실행 파일이 아닌 파일에서 실행 비트 제거 PR #82103
- @NotWearingPants
- Nate Rauh (@NRauh): Feature/pin close others PR #82545
- Oxirt (@oxirt):
Git: fetch명령이 비밀번호 프롬프트를 표시하도록 허용 PR #72615 - @simaosilva: editorHoverWidget.foreground 지원 PR #65170
- Prabhanjan S Koushik (@skprabhanjan)
- saif (@sksaifuddin): #78014 수정 - &, ^ 외에 |, <, > 이스케이프 기능 추가 PR #82704
- @smilegodly: 설정 편집기 검색 창에 지우기 버튼 추가 PR #82904
- Sohail Rajdev (@sohailrajdev97): grunt 태스크 실행기에서 명령줄 인수 지원 추가 PR #82819
- Konstantin Solomatov (@solomatov)
- Charles Milette (@sylveon): 선택할 작업이 하나뿐인 경우 빠른 선택기 건너뛰기 PR #47853
- U-ways (@U-ways): 이미지 미리보기가 올바른 캔버스 크기를 표시하도록 수정 PR #82027
- Alexander (@usernamehw)
- Jeremy Shore (@w9jds)
- Ԝеѕ (@wesinator): JSON 언어에 .har 확장명 추가 PR #77300
- Xhulio Hasani (@xuhas): deleteTag 추가 PR #74345
- Yusuke Yamada (@yamachu): 제안에서 많은 문자가 덮어쓰여지는 문제 수정 PR #82349
- Keyon You (@youngyou): 비활성화된 버튼에서
스페이스바키를 눌러도 클릭 이벤트가 트리거되지 않아야 함 PR #81975 - Helen3141 (@helen3141): 포함된 폴더에서 개별 npm 스크립트 실행 활성화 PR #79960
language-server-protocol 기여
- Adedayo Adetoye (aka Dayo) (@adedayo): ServerCapabilities에서 중복된 foldingRangeProvider 필드 제거 PR 848
vscode-eslint 기여
- Christian Batchelor (@CSBatchelor): README.md 오타 PR #777
vscode-json-languageservice 기여
- Ben Hutton (@Relequestual): 초안 2019-09에 대한 오류 메시지 업데이트 PR #45
vscode-css-languageservice에 대한 기여
- Sergey Zolotarev (@sryze): URI.parse() 호출을 try ... catch로 감싸기 PR #180
node-jsonc-parser에 대한 기여
- KoyamaSohei (@KoyamaSohei): README 오타 수정 PR #25
- Jakub Rożek (@P0lip): parse 함수는 빈 문자열을 키로 가지는 속성도 포함해야 함 PR #24
debug-adapter-protocol에 기여
- Peter Thomas (@ptrthomas): karate를 dap 구현으로 추가 PR #78
vscode-vsce 기여
- Ritwick Dey (@ritwickdey): [추가됨] README.md의
태그 내 상대 경로 소스가 절대 URL로 다시 작성되지 않음 PR #208
- Theo Tzaferis (@tzfrs): 변경되지 않은 README.md로 확장을 패키징할 때 오류 메시지 개선 PR #392
inno-updater에 대한 기여
- Adam Coyne (@bhank): 텍스트 잘림을 피하기 위해 컨트롤 너비 증가 PR #13
localization 기여
Microsoft Localization Community Platform (MLCP)를 사용하는 800명 이상의 클라우드 + AI 현지화 커뮤니티 회원이 있으며, Visual Studio Code에 약 100명의 활성 기여자가 있습니다. 새로운 번역 제공, 번역 투표 또는 프로세스 개선 제안 등 기여해주신 모든 분들께 감사드립니다.
다음은 기여자의 스냅샷입니다. 프로젝트에 대한 자세한 내용과 기여자 이름 목록을 보려면 프로젝트 사이트(https://aka.ms/vscodeloc)를 방문하십시오.
- 보스니아어 (라틴, 보스니아 헤르체고비나): Adnan Rizvan.
- 체코어: Michal Franc, Jan Hruby.
- 덴마크어: Lasse Stilvang, Frederik bruun.
- 네덜란드어: Laurens Kwanten, Lemuel Gomez, Niels ter Haar.
- 영국 영어: Graham Smith, Martin Littlecott, Alexander McLean.
- 프랑스어: Antoine Griffard, Rodolphe NOEL, Bruno Lewin, Maxime Bouveron, DJ Dakta.
- 독일어: Simon Haag, Adrian Bähr, Julian Tomsik.
- 히브리어: Ariel Bachar.
- 힌디어: Kishan K, Rohit Raj.
- 중국어 간체: Yizhi Gu, paul cheung, 斌 项, 顺 谭, 一斤瓜子, Charles Lee, Peng Zeng, Charles Dong, 楠 姜, yungkei fan, ztluo, David Huang, 普鲁文, Zhen-Qi Liu, zhichen zhao, Phil Wang.
- 중국어 번체: Jimmy Hu, 船長, E L, Winnie Lin.
- 인도네시아어: Jakka Prihatna, Eriawan Kusumawardhono, Nicko Satria Utama, Christian Elbrianno, Septian Adi.
- 이탈리아어: Alessandro Alpi, Luigi Bruno.
- 일본어: Yuta Ojima, Michihito Kumamoto, Aya Tokura, TENMYO Masakazu, Takayuki Fuwa, Koichi Makino.
- 한국어: 홍주, 정성진.
- 폴란드어: Andrzej Poblocki, Kacper Łakomski.
- 포르투갈어 (브라질): Marcelo Fernandes, Marcondes Alexandre, Roberto Fonseca, Alessandro Fragnani, Arthur Renato, Jota Freitas Jr, Caio Felippe Curitiba Marcellos.
- 포르투갈어 (포르투갈): Pedro Filipe.
- 루마니아어: Andrei Tudor, Bogdan Mateescu, Stefan Gabos.
- 러시아어: Kazakov Lex, Vadim Svitkin, TJS.
- 스페인어: Aleks M, José María Aguilar, Jerónimo Milea, Ricardo Estrada Rdez, Abdón Rodríguez P..
- 스웨덴어: Sven Axelsson, Patric Högman.
- 타밀어: Pradeep Krishnan.
- 터키어: Ahmetcan Aksu, Cansu Gürler, Mehmet Yönügül, Umut Can Alparslan.
- 우크라이나어: Arthur Murauskas, Oleh Hatsenko, Oleksandr Krasnokutskyi, Did Kokos.
- 베트남어: huy dk, Việt Anh Nguyễn, Ha Xuan Anh Nguyen, Quoc Han Dinh.