2018년 9월 (버전 1.28)
업데이트 1.28.2: 이 업데이트는 다음 이슈를 해결합니다.
업데이트 1.28.1: 이 업데이트는 다음 이슈를 해결합니다.
다운로드: Windows: x64 | Mac: Intel | Linux 64비트: deb rpm tarball | 32비트: deb rpm tarball
Visual Studio Code 2018년 9월 릴리스에 오신 것을 환영합니다. 9월 반복 계획에서 발표한 대로 GitHub 이슈 및 풀 리퀘스트를 정리하는 데 중점을 두었습니다. VS Code의 모든 리포지토리에서 3918개의 이슈를 닫았습니다(분류 또는 수정). 이슈를 닫는 동안 2187개의 새 이슈를 생성하셨습니다. 그 결과 1731개의 이슈가 순 감소했습니다. 메인 vscode 리포지토리에는 현재 2472개의 열린 기능 요청과 625개의 열린 버그가 있습니다. 또한 212개의 풀 리퀘스트를 닫았습니다.
저희의 진행 상황에 대해 얼마나 많은 관심을 보여주시는지 알게 되어 매우 기뻤습니다. Benjamin Lannon은 라이브 트래커가 포함된 개인 사이트를 게시하여 메인 리포지토리의 이슈 수를 추적했습니다. 9월 11일부터 저희가 이룬 진행 상황을 nicely 보여줍니다.

이슈 감소에 신경 쓰지 않으면 어떻게 되는지도 보여줍니다. 아래는 이 릴리스를 준비하던 지난주 마지막 3일간의 기록입니다. 보시다시피 앞으로도 더 많은 이슈 정리 반복이 있을 것입니다.

이 정리 마일스톤 동안 여러 기능 요청과 커뮤니티 풀 리퀘스트를 처리했으며, 이 또한 새로운 기능으로 이어졌습니다. 릴리스 하이라이트 몇 가지를 소개합니다.
- 파일 형식별 파일 아이콘 - VS Code 파일 아이콘이 OS 탐색기에서 파일 형식을 반영합니다.
- 프로젝트별 스니펫 - 작업 영역별로 스니펫 모음을 조정합니다.
- 편집기 탭 완성 - Tab 키를 사용하여 IntelliSense 제안을 쉽게 순환합니다.
- 마지막 편집 위치로 이동 - 마지막 편집 위치로 이동하는 새로운 명령입니다.
- 포맷터 없이 저장 - 기존 포맷을 변경하지 않고 파일을 저장합니다.
- Git 개선 사항 - 더 나은 삭제 충돌 처리, 새로운 동기화 시 rebase 옵션.
- 임포트 경로를 통한 이름 바꾸기 - JS/TS 파일을 임포트 경로를 통해 이름을 바꿉니다.
- 비동기 함수로 변환 - 함수를 async/await를 사용하도록 빠르게 업데이트합니다.
- 더 나은 Markdown 접기 - 코드 블록, 여러 줄 목록 및 포함된 HTML을 접습니다.
이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com의 업데이트로 이동하십시오.
Cloud Developer Advocate Brian Clark가 제작한 이 1.28 릴리스 하이라이트 비디오도 확인해 보십시오.
Insider: 새로운 기능을 최대한 빨리 확인하고 싶으신가요? 야간 Insider 빌드를 다운로드하여 최신 업데이트를 가능한 한 빨리 사용해 볼 수 있습니다.
워크벤치
Windows에서 기본으로 사용자 지정 제목 및 메뉴 모음
이전 릴리스 노트에서 설명한 Windows 및 Linux용 사용자 지정 제목 표시줄과 테마 지정 가능한 메뉴가 이제 Windows에서 기본적으로 활성화됩니다. "window.titleBarStyle" 설정은 지난달 Windows Insiders에서 전체적으로 "custom"으로 기본 설정되었으며, 이제 기본 환경으로 만들 준비가 되었습니다.

파일 형식별 파일 아이콘
macOS 및 Windows에서 VS Code는 잘 알려진 파일 형식의 기본 편집기로 등록됩니다. VS Code는 이제 일반적인 VS Code 파일 형식에 대한 사용자 지정 아이콘을 제공합니다. 이러한 아이콘은 OS 탐색기에서 아이콘 크기가 중간에서 크게 설정된 경우 표시됩니다. 작은 아이콘 크기의 경우 VS Code 로고를 아이콘으로 유지하기로 했습니다.
![]()
프로젝트별 스니펫
이제 스니펫을 프로젝트에 범위를 지정하고 팀과 공유할 수 있습니다. 기본 설정: 사용자 스니펫 구성 명령을 사용하거나 .vscode 폴더에 *.code-snippets 파일을 생성하기만 하면 됩니다. 프로젝트 스니펫은 다른 스니펫과 마찬가지로 작동하며 IntelliSense 및 스니펫 삽입 작업에 표시되며 이제 자체 범주가 있습니다.

스니펫은 이제 여러 접두사도 지원합니다. 저작권 헤더 스니펫의 접두사를 header, stub 또는 copyright로 결정할 수 없는 경우 모두 가질 수 있습니다. prefix 속성으로 문자열 배열을 사용하기만 하면 됩니다.
{
"prefix": ["header", "stub", "copyright"],
"body": "Copyright. Foo Corp 2028",
"description": "Adds copyright...",
"scope": "javascript,typescript"
}
폴더 열기 시 심볼릭 링크 지원
오랫동안 VS Code는 폴더를 열 때 심볼릭 링크를 해석했습니다. 이는 심볼릭 링크가 있는 데에는 이유가 있었지만 VS Code는 이를 무시하고 항상 해석된 링크 경로를 열었습니다. 이 동작을 변경하고 심볼릭 링크를 유지하기로 결정했습니다.
참고: 심볼릭 링크로 폴더를 열 때 특정 기능(예: 디버깅 및 Git 통합)은 기능이 제한적으로 작동합니다.
키보드 바로가기 녹화 및 검색
키보드 바로가기 편집기(Mac: ⌘K ⌘S, Windows, Linux: Ctrl+K Ctrl+S)에서 키 이름을 입력하는 대신 키 입력을 직접 입력하여 바로가기를 검색할 수 있습니다(예: 'shift'). 키 녹화 모드를 켜고 검색하려는 키 입력을 입력합니다.

또한 ⌥⌘K (Windows, Linux Alt+K)를 사용하여 키 녹화 모드로 진입할 수 있습니다. Esc 키를 눌러 키 녹화 모드를 종료합니다.
패널 전환 변경 사항
패널(터미널, 출력, 문제, 디버그 콘솔) 전환 명령의 동작을 다시 검토하기로 결정했습니다. 변경 배경은 이슈 19400을 참조하십시오.
이전 동작은 다음과 같았습니다.
- 패널이 표시되지 않으면 표시됩니다.
- 패널이 표시되면 숨겨집니다.
새로운 동작은 다음과 같습니다.
- 패널이 표시되지 않으면 표시됩니다.
- 키보드 포커스가 있으면 패널이 숨겨집니다.
- 패널이 표시되지만 포커스가 없으면 포커스가 맞춰집니다.
이전 동작으로 되돌리려면 관련 패널이 활성 상태일 때 패널을 닫도록 키 바인딩을 구성할 수 있습니다.
예를 들어, 출력 패널의 경우
{
"key": "cmd+shift+u",
"command": "workbench.action.closePanel",
"when": "activePanel==workbench.panel.output"
}
패널 식별자 목록은 다음과 같습니다.
terminal- 통합 터미널workbench.panel.markers- 문제 패널workbench.panel.output- 출력 패널workbench.panel.repl- 디버그 콘솔 패널
상대 경로 복사
파일 경로를 상대 경로로 복사하는 명령이 이제 파일 탐색기 및 편집기 탭의 컨텍스트 메뉴에 더 눈에 띄게 노출됩니다.

빠른 열기에서 최근 열린 파일 제외
새로운 설정 search.quickOpen.includeHistory를 사용하면 최근에 열었던 파일이 빠른 열기 파일 선택기에 포함될지 여부를 제어할 수 있습니다. 기본적으로 최근에 열었던 파일은 검색의 맨 위에 나타나고 작업 영역의 다른 파일은 아래에 나타납니다. 최근에 열었던 파일을 맨 위에 표시하고 싶지 않다면 이 설정을 false로 변경할 수 있습니다.
파일 삭제 시 휴지통 비활성화
탐색기에서 파일을 OS 휴지통으로 이동할 때 삭제하는 데 문제가 발생하는 경우 이제 files.enableTrash를 false로 설정하여 삭제 시 OS 휴지통을 사용하지 않도록 할 수 있습니다. 이렇게 하면 파일 탐색기의 삭제 작업 및 키 바인딩이 OS 휴지통을 우회하고 영구적으로 삭제하도록 변경됩니다. 삭제가 발생하기 전에 프롬프트가 표시됩니다.
감지된 작업 영역 파일 열기 프롬프트
루트에 하나 이상의 .code-workspace 파일을 포함하는 폴더를 열 때 VS Code는 이제 대신 작업 영역 파일을 열 것인지 묻는 알림을 표시합니다. 작업 영역 파일을 열면 일반적으로 폴더만 여는 것보다 더 나은 환경을 제공합니다. 다중 루트 작업 영역에 대한 자세한 내용은 문서를 참조하십시오.

파일을 다시 열 때 뷰 상태 복원 안 함
VS Code는 항상 파일이 닫힌 후에도 파일의 뷰 상태(커서 위치, 접힌 섹션 등)를 기억했습니다. 이제 파일이 닫힐 때 이 뷰 상태를 삭제하는 새 설정 workbench.editor.restoreViewState가 있습니다. 이를 통해 파일을 다시 열 때 항상 파일의 맨 위에서 시작할 수 있습니다.
모든 편집기 그룹에서 파일 닫기
새로운 명령 모든 그룹에서 편집기 닫기(workbench.action.closeEditorInAllGroups)를 사용하여 현재 활성 파일을 모든 편집기 그룹에서 닫을 수 있습니다.
문제 패널
오류 코드 표시
문제 패널에 이제 문제에 오류 코드가 있는 경우 오류 코드가 표시됩니다.

개선된 키보드 탐색
문제 패널이 키보드 친화적으로 되었습니다.
- 패널에 포커스가 맞춰진 상태에서 입력을 시작하여 필터링할 수 있습니다.
- 필터 상자에 포커스를 맞추려면 ⌘F (Windows, Linux Ctrl+F)를 사용하고, 필터 상자에서 문제 목록으로 포커스를 옮기려면 ⌘↓ (Windows, Linux Ctrl+Down)를 사용합니다.
텔레메트리 이벤트를 위한 출력 채널
7월 릴리스에서는 VS Code에서 보내는 모든 텔레메트리 이벤트가 개발자: 로그 레벨 설정... 명령을 사용하여 로그 레벨을 추적으로 설정할 때 로컬 파일에 기록되는 기능을 추가했습니다. 이제 출력 패널의 로그(텔레메트리) 채널에서 이 파일의 내용을 볼 수 있습니다. 이전과 마찬가지로 개발자: 로그 파일 열기... 명령을 사용하여 파일을 직접 볼 수 있습니다.
사용자 지정 보기로 포커스 이동
이제 사용자 지정 보기에 포커스를 맞추기 위해 명령을 사용할 수 있습니다. 각 사용자 지정 보기에 대해 별도의 명령이 제공됩니다.

Linux URL 처리
한때 Windows와 macOS에만 제한되었던 기능이 이제 Linux에서도 VS Code URL을 열 수 있습니다! 이러한 URL은 예를 들어 vscode-insiders:extension/vscodevim.vim과 같이 확장을 자동으로 설치하는 등 다양한 기능에 유용합니다.
편집기
탭 완성
편집기 탭 완성 기능이 이제 모든 종류의 제안을 완성할 수 있습니다. "editor.tabCompletion": "on"을 설정한 후 Tab 키를 누르면 스니펫뿐만 아니라 모든 접두사를 완성할 수 있습니다. 또한 Tab 키를 누르면 다음 제안이 삽입되고 ⇧Tab (Windows, Linux Shift+Tab) 키를 누르면 이전 제안이 삽입됩니다.

마지막 편집 위치로 이동
마지막 편집 위치로 이동(workbench.action.navigateToLastEditLocation)이라는 새 명령이 추가되어 편집된 마지막 위치로 빠르게 이동할 수 있습니다. 기본 키 바인딩은 ⌘K ⌘Q (Windows, Linux Ctrl+K Ctrl+Q)입니다.
포맷터 없이 저장
새로운 명령 포맷 없이 저장(workbench.action.files.saveWithoutFormatting)을 사용하여 저장 참가자(예: 포맷터, 후행 공백 제거, 마지막 줄 바꿈)를 트리거하지 않고 파일을 저장할 수 있습니다. 기본 키 바인딩은 ⌘K S (Windows Ctrl+K Ctrl+Shift+S, Linux Ctrl+K S)입니다. 이는 다른 포맷 규칙이 있을 수 있는 일반 프로젝트 외부의 파일을 편집할 때 유용합니다.
IntelliSense 지역 보너스
이제 제안을 커서와의 거리에 따라 정렬할 수 있습니다. "editor.suggest.localityBonus": true를 설정하면 IntelliSense 목록 맨 위에 함수 매개변수가 표시되는 것을 볼 수 있습니다.

Emmet
이번 반복에서 Emmet 기능을 몇 가지 개선했습니다.
- JavaScript 파일에서 Emmet를 사용하도록 설정한 경우 이제 HTML 파일의
<script>태그 내에서 Emmet 약어 확장을 사용할 수 있습니다. - Emmet: 약어로 래핑 기능은 더 이상
.html확장자가 있는 파일로 제한되지 않습니다. - Emmet: 균형(안쪽으로) 기능은 선택 영역이 없어도 현재 노드에서 작동합니다.
- SCSS 파일에서
#이 포함된 CSS 선택기를 잘못된 약어로 간주하던 버그가 이제 수정되었습니다.
소스 제어
SCM 커밋 키 바인딩 변경
이제 scm.acceptInput 명령을 사용하여 SCM 보기에서 커밋 메시지를 수락하는 기본 키 바인딩을 변경할 수 있습니다.
SCM 상태 표시줄이 활성 파일을 추적합니다.
왼쪽 하단의 SCM 상태 표시줄 기여는 이제 현재 활성 파일이 속한 리포지토리를 추적합니다. 이렇게 하면 다중 폴더 작업 영역에서 파일을 편집할 때 혼란을 줄일 수 있습니다.
Git 통합
삭제 충돌 처리 개선
삭제 충돌은 항상 VS Code에서 감지되었습니다. 이제 이를 처리하기 위한 더 나은 UI 흐름이 있습니다. 변경 사항을 열 때 삭제되지 않은 버전을 볼 수 있으며 스테이징할 때 파일에 대한 작업을 결정할 수 있습니다: 유지하거나 삭제합니다.

긴 커밋 메시지 경고 임계값 구성
git.inputValidationLength 설정은 이제 편집할 때 경고가 표시되기 전에 커밋 메시지가 얼마나 길어야 하는지 구성할 수 있습니다.
'git init' 후 작업 영역에 폴더 추가
Git 저장소를 초기화한 후 VS Code는 이제 현재 작업 영역에 추가할 것인지 묻습니다.
브랜치 유효성 검사 규칙 구성
강력한 git.branchValidationRegex 및 git.branchWhitespaceChar 설정을 사용하여 브랜치 이름 유효성 검사가 작동하는 방식을 제어할 수 있습니다. 자세한 내용은 이슈 50241을 참조하십시오.
동기화 실행 시 항상 rebase
git.rebaseWhenSync 설정을 사용하면 동기화 명령이 실행될 때 병합 대신 항상 rebase를 사용하도록 구성할 수 있습니다.
진행률 보고 비활성화
git.showProgress 설정을 사용하면 이제 Git 작업 중에 진행률 표시를 비활성화할 수 있습니다.
Push --force
개발 중에 때때로 위험을 감수하고 싶을 때가 있습니다. git push --force 실행이 좋은 예입니다! VS Code는 이제 터미널에 갈 필요 없이 원격으로 커밋을 강제로 푸시할 수 있습니다. git.allowForcePush, git.useForcePushWithLease 및 git.confirmForcePush 설정을 사용하여 이 동작을 제어하십시오. 자세한 내용은 이슈 53286을 참조하십시오.
Stash 적용
다음 git stash apply 명령이 이제 전역 명령 팔레트에 표시됩니다: Git: Stash 적용..., Git: 최신 Stash 적용.
스테이지된 변경 사항 섹션 항상 표시
이제 git.alwaysShowStagedChangesResourceGroup 설정을 사용하여 SCM 보기에서 스테이지된 변경 사항 섹션을 비어 있을 때도 항상 표시되도록 유지할 수 있습니다.

터미널
사용자 지정 시퀀스를 보내는 키 바인딩 정의
새 명령 workbench.action.terminal.sendSequence가 추가되었습니다. 이를 통해 활성 터미널로 사용자 지정 시퀀스를 직접 보낼 수 있습니다. 예를 들어 화살표 키, enter 등을 보내거나 유니코드 문자를 보내기 위해 \u 형식을 사용할 수 있습니다.
{
"key": "ctrl+u",
"command": "workbench.action.terminal.sendSequence",
"args": { "text": "\u001b[1;5D\u007f" }
}
검색 개선 사항
터미널의 검색 기능이 개선되어 이제 편집기에서의 검색과 유사하게 작동합니다.
- 정규식, 대소문자 구분 및 단어 일치 지원.
- 표준 검색 다음/이전 키 바인딩(F3, shift+F3)이 이제 작동합니다.
- 줄 바꿈된 검색 결과가 반환됩니다.
언어
TypeScript 3.1
VS Code 1.28은 TypeScript 3.1.1과 함께 제공됩니다. 이 릴리스는 매핑 가능한 튜플 및 배열 타입과 같은 새로운 언어 기능과 함께 다양한 도구 개선 및 버그 수정을 제공합니다.
임포트 경로 이름 바꾸기
가져온 파일의 이름이 더 나아질 수 있다고 생각하시나요? 이제 임포트 이름을 바꾸는 것만으로 참조된 파일의 이름을 바꿀 수 있습니다.

비동기 함수로 변환
JavaScript 및 TypeScript용 새 비동기 함수로 변환 제안은 .then Promise 체인을 사용하는 함수를 async 및 await를 사용하도록 다시 작성합니다.

이 기능을 사용하려면
javascript.validate.enable설정이 true로 설정되어 있어야 합니다.
JS/TS 제안에 대한 새 설정
JavaScript 및 TypeScript 제안에 대한 설정 이름을 정리했으며, 더 세부적인 제어를 제공하는 몇 가지 추가 설정을 추가했습니다.
- 모든 제안 관련 설정은 이제
javascript.suggest.*및typescript.suggest.*아래에 있습니다. typescript.useCodeSnippetOnMethodSuggest는javascript.suggest.completeFunctionCalls및typescript.suggest.completeFunctionCalls로 이름이 변경되었습니다.javascript.nameSuggestions는javascript.suggest.names로 이름이 변경되었습니다.typescript.autoImportSuggestions.enabled는javascript.suggest.autoImports및typescriptscript.suggest.autoImports로 이름이 변경되었습니다.- 새로운
javascript.suggest.enabled및typescript.suggest.enabled를 사용하면 JS 또는 TS 제안을 완전히 비활성화할 수 있습니다.
JS/TS의 커밋 문자로 세미콜론
이제 세미콜론은 JavaScript 및 TypeScript 제안의 커밋 문자입니다. 즉, ;을 입력하는 것만으로 현재 제안을 수락할 수 있습니다. 기존 커밋 문자는 . 및 (도 포함합니다.
"editor.acceptSuggestionOnCommitCharacter": false로 설정하여 커밋 문자를 비활성화할 수 있습니다.
HTML 및 CSS 경로 완성은 점 파일 제외
.으로 시작하는 파일은 이제 경로 완성 결과에서 제외됩니다.
더 나은 Markdown 접기
여러 줄 목록, 구분된 코드 블록, 원시 HTML이 이제 Markdown 파일에서 접혀집니다.

Markdown 미리보기가 이제 미리보기에서 로컬 파일 링크를 엽니다.
로컬 파일에 대한 링크를 클릭하면 이제 해당 파일의 미리보기가 열립니다.

이를 통해 문서를 더 쉽게 탐색할 수 있습니다. markdown.preview.openMarkdownLinks 설정을 사용하여 링크가 처리되는 방식을 구성할 수 있습니다. 유효한 설정 값은 다음과 같습니다.
inEditor- 편집기에서 로컬 Markdown 링크 열기.inPreview- 현재 미리보기에서 로컬 Markdown 링크 열기. 이것이 새로운 기본 동작입니다.
확장
검색 필터링 개선
이제 @category 필터와 @installed, @enabled, @disabled, @outdated와 같은 설치된 확장 프로그램에 대한 다른 필터를 함께 사용하여 확장 프로그램 검색 쿼리를 구성할 수 있습니다. 예를 들어, @installed @category:themes 쿼리를 사용하여 설치된 테마를 검색하거나 @installed @category:snippets를 사용하여 스니펫을 제공하는 설치된 확장 프로그램을 검색할 수 있습니다.
비활성화된 확장은 오래된 것으로 간주되지 않음
확장 보기의 활동 표시줄에 있는 오래된 확장 프로그램 수를 표시하는 배지는 이제 비활성화된 확장 프로그램을 제외합니다. 이 배지의 의도는 업데이트할 수 있는 오래된 확장 프로그램이 있음을 알리는 것이었습니다. 비활성화된 확장 프로그램은 현재 사용되지 않으므로 개수에 포함하면 혼란만 야기할 것입니다.
확장 호스트 응답 없음
VS Code는 확장을 확장 호스트라는 별도의 프로세스에서 실행합니다. 이 프로세스는 메시지 전달을 사용하여 렌더러/UI 프로세스와 통신합니다. 확장 호스트에 대한 메시지 추적을 개선했으며 메시지가 10초 이내에 승인되지 않으면 다음 알림이 표시됩니다.

의미: 대부분의 경우 확장이 CPU 집약적인 작업을 수행하여 확장 호스트 프로세스를 10초 이상 차단합니다.
조치: 한 가지 옵션은 작업을 완료하기 위해 기다리는 것이고 알림을 무시하는 것입니다. 다른 옵션은 실행 중인 확장 보기로 이동하여 확장 호스트 프로파일링 시작을 통해 어떤 확장이 높은 CPU 사용량을 유발하는지 조사하는 것입니다. 그런 다음 문제가 있는 확장에 대해 직접 이슈를 만들 수 있습니다. 마지막으로, 확장이 무한 루프에 들어갔다고 생각하고 복구되지 않을 것으로 보이면 확장 호스트를 다시 시작할 수 있습니다.
엔지니어링
확장과 webpack
webpack 노력을 계속했으며 이제 번들로 제공된 대부분의 확장이 webpack 처리되었습니다. 복습하자면, 이는 로드할 파일 수가 적고 구문 분석할 소스 코드가 적기 때문에 확장 시작 시간을 줄이는 데 도움이 됩니다. 또한 추출하고 디스크에 써야 할 파일이 적기 때문에 설치 시간을 줄이는 데 도움이 됩니다.
이번 마일스톤에서 번들을 2803개의 파일로 더 줄였습니다. 7월에는 9000개의 파일로 시작했고, 8월에는 4650개로 줄었으며, 9월에는 1847개입니다!
미리보기 기능
미리보기 기능은 릴리스 준비가 되지 않았지만 사용할 만큼 기능적입니다. 개발 중인 동안 초기 피드백을 환영합니다.
Electron 3.0 탐색 지속
이번 마일스톤 동안 Electron 3.0.0을 VS Code에 번들링하는 작업을 계속했습니다. 이것은 주요 Electron 릴리스이며 Chrome 66 및 Node.js 10.x(현재 Chrome 61 및 Node.js 8.x를 사용하는 버전에 비해 큰 도약)를 포함합니다. 가까운 시일 내에 Insiders 사용자에게 업데이트를 푸시하여 추가 피드백을 수집할 계획입니다. 도움을 주려면 VS Code Insiders를 설치하십시오.
기타
macOS Mojave의 흐릿함
macOS 10.14(Mojave)로 업데이트했다면 고화질 모니터를 사용하지 않는 경우 VS Code의 글꼴이 흐릿하게 보일 수 있습니다.
이를 해결하기 위한 임시 해결책은 다음과 같습니다.
defaults write com.microsoft.VSCode.helper CGFontRenderingFontSmoothingDisabled -bool NO
터미널에서 실행한 후 컴퓨터를 다시 시작합니다.
이 변경 사항은 VS Code에만 국한되지 않고 모든 응용 프로그램에 대한 전역 설정입니다. 관련 논의는 이슈 51132를 참조하십시오.
Electron 업데이트
이번 릴리스에서는 Electron 2.0.7에서 2.0.9로 업데이트했습니다. 가장 주목할 만한 점은 VS Code가 ArchLinux에서 다시 실행될 수 있도록 허용한다는 것입니다(이슈 55934).
확장 프로그램 작성
설치되지 않은 확장 프로그램에 대한 URL 처리
지난 7월에 확장이 시스템 전체 URI를 처리하기 위한 URI 처리기 API를 릴리스했습니다. 최신 릴리스에서는 VS Code가 아직 설치되지 않은 확장에 대한 URI도 처리할 수 있습니다. 사용자가 그러한 URI를 열면 VS Code는 Marketplace에서 해당 확장을 검색하고 사용자에게 설치를 제안하며 URI를 전달하여 VS Code를 시작합니다. 이를 통해 확장은 웹페이지에서 특정 상태로 실행 중인 확장으로 사용자를 안내하는 원활한 시작 흐름을 가질 수 있습니다.
진단 오류 코드
이제 문제 패널에 진단 오류 코드가 표시되므로 확장이 Diagnostic.message 속성에 오류 코드를 추가할 필요가 없습니다.
더 나은 조건부 구성
키 바인딩 또는 메뉴 표시 여부를 작성할 때 조건부 구성이 사용됩니다. 조건부 구성에서 config.를 앞에 붙여 구성(설정) 값을 참조할 수 있습니다. 예를 들어 config.editor.tabCompletion입니다. 이전에는 부울 구성 속성만 지원되었지만 이번 릴리스에서는 문자열 및 숫자 값도 사용할 수 있습니다.
텍스트 문서의 언어 변경
문서의 언어 모드를 변경하는 새 API 함수 vscode.languages.setTextDocumentLanguage가 있습니다. 이 API는 문서와 사용하려는 언어 식별자를 받습니다. 사용 가능한 언어 ID를 알아보려면 vscode.languages.getLanguages를 사용하십시오.
workspaceContains 활성화
확장은 workspaceContains 활성화 이벤트를 사용하여 작업 영역에 패턴과 일치하는 파일이 포함된 경우 활성화될 수 있습니다. 예를 들어 PHP 확장은 **/*.php와 일치하는 파일이 있는 작업 영역이 열릴 때 활성화되도록 요청할 수 있습니다. 이것은 새로운 것이 아니지만 사용자는 대규모 작업 영역이 열릴 때 검색 프로세스가 오래 실행되고 CPU를 많이 사용할 수 있다고 지적했습니다.
이러한 검색의 영향을 줄이기 위해 몇 가지 변경을 했습니다. 첫 번째는 이러한 검색이 이제 사용자의 files.exclude, search.exclude 및 search.useIgnoreFiles 설정을 존중한다는 것입니다. 즉, 사용자가 일반 텍스트 검색 또는 빠른 열기를 통한 파일 검색에서 파일을 찾을 수 없으면 workspaceContains 패턴이 해당 파일과 일치하지 않습니다. 이렇게 하면 workspaceContains에 대해 검색해야 하는 파일 수가 크게 줄어들고, 프로젝트의 일부가 아닌 파일(예: node_modules/에 묻혀 있는 파일)과 일치할 때 잘못된 활성화가 줄어듭니다.
두 번째 변경 사항은 이러한 검색에 7초 제한을 적용하는 것입니다. 검색이 7초 후에 완료되지 않으면 검색 프로세스를 종료하고 확장 프로그램을 활성화합니다.
전반적으로 VS Code에서 대규모 작업 영역을 연 후 노트북이 알 수 없이 뜨거워지는 경우를 줄여야 합니다.
새로운 테마 색상
새로운 테마 색상이 있습니다.
menu.separatorBackground: 메뉴에서 구분 기호 메뉴 항목의 색상입니다.sideBarSectionHeader.border: 사이드바 섹션 헤더 테두리 색상입니다.inputValidation.infoForeground: 정보 심각도에 대한 입력 유효성 검사 전경 색상입니다.inputValidation.warningForeground: 경고 심각도에 대한 입력 유효성 검사 전경 색상입니다.inputValidation.errorForeground: 오류 심각도에 대한 입력 유효성 검사 전경 색상입니다.editor.snippetTabstopHighlightBackground: 스니펫 탭 중단점의 강조 표시 배경색입니다.editor.snippetTabstopHighlightBorder: 스니펫 탭 중단점의 강조 표시 테두리 색상입니다.editor.snippetFinalTabstopHighlightBackground: 스니펫의 마지막 탭 중단점의 강조 표시 배경색입니다.editor.snippetFinalTabstopHighlightBorder: 스니펫의 마지막 탭 중단점의 강조 표시 테두리 색상입니다.activityBar.inactiveForeground: 비활성 상태일 때 활동 표시줄 항목의 전경 색상입니다.
디버그 API
resolveDebugConfiguration은 launch.json을 열기 위해 명시적으로 null을 반환해야 합니다.
이전에는 resolveDebugConfiguration이 type 속성이 없는 시작 구성을 반환하는 경우 VS Code가 자동으로 기본 launch.json 파일을 열었습니다. 확장 작성자의 피드백 후 이 시나리오에 대한 확장 제어 권한을 더 많이 부여하기로 결정했습니다.
이제 resolveDebugConfiguration은 디버그 세션을 시작하지 않고 대신 launch.json을 열려면 명시적으로 null 값을 반환해야 합니다. undefined 값을 반환하면 단순히 디버그 세션 시작이 방지됩니다. 이전과 마찬가지로 type 속성이 있는 구성을 반환하면 디버그 세션이 시작됩니다.
제안된 확장 API
각 마일스톤에는 새로운 제안 API가 포함되며 확장 작성자는 이를 시험해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 기다립니다. 제안된 API를 시험해 보려면 다음 단계를 따르세요.
- 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
- 확장의
package.json파일에 이 줄이 있어야 합니다:"enableProposedApi": true. - 최신 버전의 vscode.proposed.d.ts 파일을 프로젝트로 복사하세요.
제안된 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환되지 않는 변경이 발생할 수 있으며 기존 확장에 문제가 발생하는 것을 원하지 않습니다.
디버그 API
새로운 DebugConfigurationProvider.provideDebugAdapter가 DebugConfigurationProvider.debugAdapterExecutable 명령을 대체합니다.
이전에 VS Code에서 시작될 디버그 어댑터의 동적으로 계산된 경로 (및 해당 프로그램 인수)를 확장 프로그램이 반환할 수 있도록 제안된 API DebugConfigurationProvider.debugAdapterExecutable을 추가했습니다. 이번 마일스톤에서는 받은 피드백(예: #45220, #56646, #57706, #54465)을 기반으로 초기 설계를 수정합니다.
새로운 API 메서드는 provideDebugAdapter라고 하며, 이제 디버그 세션, 워크스페이스 폴더, package.json의 실행 파일 정보, 그리고 해결된 launch config를 전달합니다. 이 정보를 통해 확장 프로그램은 디버그 어댑터를 생성하라는 요청을 받을 때 "전체 그림"을 파악할 수 있습니다.
또한, 디버그 어댑터 구현을 시작하고 연결하는 더 많은 방법을 지원합니다. 이를 위해 provideDebugAdapter 메서드에서 디스크립터 객체를 반환할 수 있습니다.
DebugAdapterExecutable디스크립터는 세션당 외부 프로세스로 디버그 어댑터를 시작하고 stdin/stdout을 통해 통신하는 데 사용될 수 있습니다. 새 API를 사용하면 디버그 어댑터의 작업 디렉토리 및 환경 변수를 지정할 수 있습니다.DebugAdapterServer는 여러 세션을 처리하고 소켓을 통해 통신하는 서버 프로세스를 설명합니다.DebugAdapterImplementation은 통신 오버헤드가 없는 인플레이스 구현에 사용할 수 있습니다. 이 옵션은 DAP 기반의 Node.js 클라이언트 라이브러리의 작은 수정에 의존하며 10월에 계획되어 있습니다.
이것은 제안된 API이며 마켓플레이스에 게시된 확장 프로그램에는 사용할 수 없습니다. 그러나 DebugConfigurationProvider.provideDebugAdapter에 대한 피드백을 이슈 45220에서 기다리겠습니다.
댓글 편집 및 삭제
이전 반복에서 확장 프로그램이 편집기 내에서 주석을 생성하고 관리할 수 있도록 DocumentCommentProvider를 도입했습니다. 주석의 편집 및 삭제를 지원하기 위해 이 공급자에 새로운 메서드를 추가했습니다. 주석 자체에도 편집 또는 삭제를 지원하는지 여부를 나타내는 플래그가 있습니다. 확장 프로그램이 이 플래그 중 하나를 설정하고 적절한 편집 또는 삭제 메서드를 제공하면, 편집기에서 주석을 마우스로 올리거나 포커스를 맞췄을 때 주석을 편집하거나 삭제하는 작업이 표시됩니다.

새로운 명령
| 키 | 명령 | 명령 ID |
|---|---|---|
| ⌘K ⌘Q (Windows, Linux Ctrl+K Ctrl+Q) | 마지막 편집 위치로 이동 | workbench.action.navigateToLastEditLocation |
| ⌘K S (Windows Ctrl+K Ctrl+Shift+S, Linux Ctrl+K S) | 저장 참가자(포맷터 등)를 실행하지 않고 파일 저장 | workbench.action.files.saveWithoutFormatting |
| 모든 편집기 그룹에서 활성 파일 닫기 | workbench.action.closeEditorInAllGroups |
|
차이점 편집기 인라인 및 나란히 모드 전환 (toggle.diff.editorMode 대체) |
toggle.diff.renderSideBySide |
새로운 문서
GitHub Pull Request 확장 블로그 게시물
Kenneth의 새로운 GitHub Pull Request 확장을 발표하고 VS Code와 GitHub Editor 팀 간의 협업을 논의하는 최근 블로그 게시물을 읽어볼 수 있습니다.
Azure Pipelines 사용 블로그 게시물
Visual Studio Code에서 Azure Pipelines 사용에서 VS Code 엔지니어 João Moreno는 VS Code가 빌드 및 지속적 통합(CI) 인프라에 Azure Pipelines를 사용하는 방법을 설명합니다.
새로운 PowerShell 주제
Visual Studio Code의 PowerShell은 Microsoft PowerShell 확장을 통한 PowerShell 통합을 보여줍니다. 이 확장은 IntelliSense, 정의로 이동, 모든 참조 찾기 와 같은 강력한 언어 기능과 디버깅 및 코드 조각을 지원합니다.
새로운 Python Django 튜토리얼
VS Code에서 Python Django 웹 애플리케이션을 신속하게 생성, 편집 및 디버그하는 방법을 보여주는 새로운 Visual Studio Code에서 Django 사용 튜토리얼이 있습니다.
주요 수정 사항
- 48051: 서식 지정 후 왼쪽으로 스크롤해야 함
- 31619: 스니펫에서 삭제된 탭 정지 지점을 탭해야 함
- 58327: 디버그 도구 모음 버튼 비활성화
- 35935: "최근 열기 지우기"는 편집기 빠른 선택 기록도 지워야 함
- 58799: 저장 시 제목 없는 파일 표시
- 29553: Escape 시 빠른 열기 입력 유지
- 58222: UriDisplayService에 원격 공유 경로 이름이 누락됨
- 54213: launch.json을 표시하지 않고 디버그 시작을 중단하는 메커니즘
- 52511: 디버그 호버 위젯 - 오버플로가 숨겨진 긴 항목에 대한 위젯 크기 조정 활성화
- 50569: 조건부 중단점 프롬프트는 중단점이 이미 비활성화된 경우 중단점 활성화를 제공해야 함
- 42737: 확장 프로그램: 오른쪽 클릭하여 기어 메뉴 표시
- 58434: CLI에서 확장 프로그램을 설치하는 동안 프롬프트를 방지하기 위해
--force인수 사용
감사합니다
마지막으로, VS Code를 더욱 발전시키는 데 도움을 준 다음 분들께 진심으로 감사드립니다.
vscode 기여
- Sribalaji M (@1AmNegan): 다음 변경/이전 변경을 위한 뷰포트 중앙 정렬 (키 바인딩 PR #51235)
- Agustín Rodríguez (@agurodriguez): Markdown 미리 보기의 차이점 스타일 PR #59289
- Andrew Casey (@amcasey): typescript-language-features/languageserviceerrorresponse에 대한 GDPR 주석 추가 PR #57182
- Andy Li (@andyli): Ubuntu의 기본 통합 터미널 글꼴 옵션 재정의 (#_35901) PR #56429
- Aliaksandr Stelmachonak (@ava1ar): ARM64 빌드 지원 추가 PR #52119
- Beau Allison (@beauallison): GIT 밝은 색상 체크 아이콘을 어두운 색상과 정렬 PR #50526
- Andre Wachsmuth (@blutorange): 프로미스 폴리필 수정, 프로미스 체이닝 작동 PR #57723
- Bruno Finger (@brunofin): 브랜치 생성 시 괄호도 대체 PR #57374
- David Staheli (@DavidStaheli): 새로운 VSTS YAML 구문 사용 PR #57745
- Dave Williams (@davnicwil): TypeScript 자동 완성 제안 비활성화 새 구성 PR #58011
- Dustin Campbell (@DustinCampbell): C# 문법 업데이트 PR #57451
- Eric Amodio (@eamodio): 쿼리 문자열이 있는 이미지 URI가 제대로 감지되지 않음 PR #58314
- @Git-Lior
- Guy Waldman (@guywald1)
- Jay Rodgers (@headmelted)
- Eric Gang (@Hirico): git-diff 편집기에서 "파일 열기" 사용 후 표시된 영역 유지 (수정 #53465) PR #54867
- Jatin Sandilya (@jats22): python에 대한 절대 경로 제거 PR #56943
- Jason Bright (@jgbright)
- Jim Hessin (@jhessin): language-configuration.json 업데이트 PR #44566
- JYX (@jjyyxx): tsconfig.schema.json의 부정확한 설명 수정 PR #58582
- Jonathan Perret (@jonathanperret): workbench.editor.labelFormat의 오타 수정 PR #59155
- Konstantin Müller (@konstantin-mueller): #54204 스태시 적용 명령 추가 PR #54300
- limerick (@limerickgds): 클래스 자동 완성의 생성자 메서드가 별표(*)를 추가하도록 함… PR #51557
- Luis Zuniga (@luiszun): 전송 전에 경로에 공백이 있는지 확인. 파일 이름이 inte...되는 것을 방지 PR #56966
- @lzmkony: 중복 함수 삭제 PR #57700
- Muhammad Azeem (@manixate): 스크롤 막대가 드래그 앤 드롭의 드롭 대상이 되지 않도록 함 PR #49747
- Matt Hardcastle (@MattHardcastle): 열려 있는 상태로 끝날 때 자동 닫기 안 함 PR #55315
- Maarten Fonville (@mfonville): Electron을 2.0.9로 업데이트 PR #58382
- Marat Abdullin (@mshoho): 클립보드에 일반 텍스트만 복사하는 옵션 PR #54155
- Néstor Hernández Ojeda (@nesukun): force push 및 force-with-lease 지원 추가 PR #53286
- Nilesh Kevlani (@njkevlani): 터미널에 사용자 지정 시퀀스를 보내는 새 명령 추가 PR #56962
- Noam Yogev (@noamyogev84): 동일한 스니펫에 대한 여러 접두사를 지원하기 위해 스니펫 JSON 접두사를 배열로 허용 PR #59092
- Alexandre ZANNI (@noraj): 더 많은 Markdown 확장 추가 PR #58072
- Sardorbek (@oneslash)
- Karthikayan (@ParkourKarthik)
- Chi Wang (@patr0nus): "잘못된 시작 인덱스" 오류 수정 PR #57617
- Morten N.O. Nørgaard Henriksen (@raix): 브랜치 이름 유효성 검사 및 공백 구성 추가 PR #50712
- Rik Smeets (@rik-smeets): 누락된 메뉴 항목 접근 키(니모닉) 추가 PR #58412
- Rodrigo Varas (@rodrigovaras): EH 디버깅이 라이브 공유가 디버그 어댑터를 프록시할 때 작동하도록 수정 PR #58227
- Segev Finer (@segevfiner)
- @sucicf1: 수정 #35905 PR #58380
- Thomas Basche (@tombasche): 빈 Git 커밋 허용 PR #56048
- tsangint (@tsangint): 오타 수정 PR #57192
- Alexander (@usernamehw): 탭 포커스 관련 문제 수정 PR #57821
- Winner Crespo (@wistcc)
language-server-protocol 기여
- Tyson Andre (@TysonAndre): 더 많은 오타 수정 PR #568
vscode-languageserver-node에 기여
- Mathias R. Jessen (@IISResetMe): "received"의 오류 메시지 오타 수정 PR #414
debug-adapter-protocol에 기여
- Antonino Perricone (@APerricone): APerricone의 하버 언어 추가 PR #6
vscode-recipes에 기여
- Daryl Knowles (@darylknowles): End-To-End 디버그는 ng e2e와 함께 로컬 서버 시작해야 함 PR #122
- Karuppasamy M (@karuppasamy): Ruby on Rails 레시피 추가 PR #59
- Trivikram Kamat (@trivikr): VS Code에서 node-tap 테스트 디버깅 레시피 추가 PR #128
vscode-chrome-debug 기여
- Sasha (@stristr): 고급 디버깅을 위해 nullable
targetTypes속성 사용 PR #727
vscode-chrome-debug-core 기여
localization 기여
Transifex VS Code 프로젝트 팀에는 거의 1200명의 회원이 있으며 매월 약 100명의 활성 기여자가 있습니다. 새로운 번역 제공, 번역 투표 또는 프로세스 개선 제안을 통해 여러분의 기여에 감사드립니다.
다음은 이번 릴리스의 기여자 스냅샷입니다. 프로젝트에 대한 자세한 내용은 기여자 이름 목록을 포함하여 프로젝트 사이트인 https://aka.ms/vscodeloc를 방문하십시오.
- 벵골어: Anisuzzaman Khan, abm_prottoy, Mushiar Khan, Mehedi Hassan.
- 불가리아어: Любомир Василев.
- 크로아티아어: Nikša Mihaica.
- 체코어: Vít Staniček.
- 덴마크어: Kenneth Greig, Johan Fagerberg, Martin Fruensgaard.
- 네덜란드어: Gerald Versluis, Marco van den Hout.
- 프랑스어: Antoine Griffard, MayakoLyyn, Smrman, Etienne Blanc-Coquand.
- 독일어: J.M., Carsten Kneip, Volkmar Rigo, SetTrend.
- 그리스어: Nikolaos Maliakkas.
- 힌디어: Ashwini Gupta, Shaswat Rungta.
- 헝가리어: Tar Dániel.
- 중국어 간체: Joel Yang, 子实 王, pluwen, Chris Pan 潘冬冬, danyeh.
- 중국어 번체: Duran Hsieh, Poy Chang, Alan Tsai, Han Lin, Shih-Ming Tung, Will 保哥.
- 인도네시아어: G-RiNe Project, Wildan Mubarok, Rizki A. Wibowo, Riwut Libinuko, Azhe-kun, rodin, Febrian Setianto (Feber).
- 이탈리아어: Luigi Bruno, Luca Bruni, Alessandro Alpi, Emilie Rollandin, Pascal Brax, Andrea Dottor, Riccardo Cappello.
- 일본어: Satoshi Kajiura, Shunya Tajima, Yuichi Nukiyama, yoshioms, daisuke osada (daiskeh).
- 한국어: 경희 고, 재연 김, 준성 장, 지산 오.
- 리투아니아어: Martynas Jusys.
- 말라얄람어: Kiren Paul.
- 노르웨이어: Espen Klein Nilsen.
- 폴란드어: Artur, Patryk Brejdak, Adam Borowski, Mateusz Wyczawski.
- 포르투갈어(브라질): Roberto Fonseca, Bruno Sonnino, Danilo Dantas, Marcelo Fernandes, Thiago Custodio, Rodrigo Crespi, Marcelo Andrade, Alessandro Fragnani, Lucas Miranda, Otacilio Saraiva Maia Neto.
- 포르투갈어(포르투갈): António Santos,Diogo Barros, António Lourenço, jp2masa, Ruben Mateus, Henrique Silva, André Vala.
- 러시아어: Ivan Kuzmenko, Roman Slauta.
- 스페인어: Jorge Serrano Pérez, José M. Aguilar, Alberto Poblacion, Carlos Mendible, Alejandro Medina, Andy Gonzalez,Carlos Herrera.
- 타밀어: Vijay Nirmal, rajakvk, Anand AV.
- 터키어: Mustafa Turhan, Fırat Payalan, Selim Ata.