2023년 6월 (버전 1.80)
업데이트 1.80.1: 이 업데이트는 다음 이슈를 해결합니다.
업데이트 1.80.2: 이 업데이트는 이 보안 이슈를 해결합니다.
다운로드: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Visual Studio Code 2023년 6월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러분이 좋아하실 만한 많은 업데이트가 포함되어 있습니다. 주요 내용 중 일부는 다음과 같습니다.
- 접근성 개선 - 화면 판독기 지원 강화를 위한 접근 가능한 보기, Copilot 오디오 단서.
- 편집기 그룹 및 탭 크기 조정 개선 - 최소 탭 크기 설정, 불필요한 편집기 그룹 크기 조정 방지.
- 선택 영역 축소 및 확장 시 하위 단어 건너뛰기 - 선택 시 낙타 표기법 사용 여부 제어.
- 터미널 이미지 지원 - 통합 터미널에서 직접 이미지 표시.
- mypy 및 debugpy용 Python 확장 - VS Code에서 Python 유형 검사 및 디버깅용.
- WSL에 대한 원격 연결 - 터널을 사용하여 원격 머신의 WSL 인스턴스에 연결.
- 미리 보기: GitHub Copilot 워크스페이스/노트북 생성 - 프로젝트 및 노트북을 빠르게 스캐폴딩.
- VS Code용 C# 설명서 새로 추가 - C# Dev Kit 확장을 사용하여 C# 개발에 대해 알아보세요.
이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com의 업데이트로 이동하십시오.
Insider: 새로운 기능을 최대한 빨리 사용해 보고 싶으신가요? 야간 빌드인 Insider 빌드를 다운로드하고 사용 가능한 최신 업데이트를 즉시 사용해 보세요.
접근성
접근 가능한 보기
새 명령 **접근 가능한 보기 열기** (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2))는 화면 판독기 사용자가 문자를 단위로, 줄을 단위로 콘텐츠를 검사할 수 있게 합니다. 호버 또는 채팅 패널 응답이 포커스된 상태에서 이 명령을 호출하세요.
접근성 도움말 개선
새 명령 **접근성 도움말 열기** (⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1))는 현재 컨텍스트를 기반으로 도움말 메뉴를 엽니다. 현재 편집기, 터미널, 노트북, 채팅 패널 및 인라인 채팅 기능에 적용됩니다.
접근성 도움말 메뉴 힌트를 비활성화하고, 도움말 메뉴 내에서 추가 설명서(있는 경우)를 엽니다.
노트북에 대한 접근성 도움말
노트북 편집기 레이아웃 및 노트북 탐색 및 상호 작용에 대한 정보를 제공하기 위해 노트북에 새로운 접근성 도움말 메뉴가 추가되었습니다.
채팅 오디오 단서
이제 GitHub Copilot 채팅 환경에 대한 오디오 단서가 있으며, audioCues.chatRequestSent, audioCues.chatResponsePending 및 audioCues.chatResponseReceived를 통해 활성화할 수 있습니다.
채팅 접근성 개선
채팅 응답은 도착하는 즉시 화면 판독기에 제공되며, 인라인 및 채팅 패널 접근성 도움말 메뉴에는 각 기능에 대해 무엇을 기대하고 어떻게 상호 작용해야 하는지에 대한 자세한 정보가 포함되어 있습니다.
설정 편집기 대체 텍스트 개선
설정 편집기(기본 설정: 설정 열기(UI) 명령을 통해 액세스 가능)는 화면 판독기로 탐색할 때 덜 장황해졌습니다. 특히, 설정 범위 전환기는 파일 경로 대신 범위의 실제 이름을 알리며, 설정 설명 대체 텍스트는 원시 Markdown 서식이 포함되지 않도록 정리되었습니다.

워크벤치
미리 보기 동영상 자동 재생 및 루핑
이제 내장된 동영상 파일 미리 보기에 대해 동영상 자동 재생 및 루핑을 활성화할 수 있습니다. 관련 설정은 다음과 같습니다.
mediaPreview.video.autoPlay— 동영상 자동 재생을 활성화합니다. 자동 재생되는 동영상은 자동으로 음소거됩니다.mediaPreview.video.loop— 동영상 루핑을 활성화합니다.
이 설정들은 기본적으로 꺼져 있습니다.
편집기가 읽기 전용일 때 더 많은 도움말
지난 마일스톤에 VS Code에 읽기 전용 모드가 도입됨에 따라, 편집기는 작업 영역 구성으로 인해 읽기 전용 상태가 될 수 있습니다.
이번 마일스톤에서는 읽기 전용 편집기에 입력하려고 할 때 편집기 내 알림 메시지를 개선했으며, 경우에 따라 files.readonly 설정을 변경하는 링크를 제공합니다.
기본 파일 대화 상자 위치
새로운 설정 files.dialog.defaultPath는 파일 대화 상자(예: 파일 또는 폴더 열기/저장 시)가 열릴 때 표시해야 하는 기본 위치를 구성할 수 있습니다. 이 기본값은 다른 위치를 알 수 없는 경우(예: 빈 VS Code 창)에만 대체로 사용됩니다.
탭 더블 클릭 시 편집기 그룹 최대화 비활성화
새로운 설정 workbench.editor.doubleClickTabToToggleEditorGroupSizes는 해당 그룹의 탭을 더블 클릭하여 편집기 그룹 크기를 최대화에서 복원 상태로 전환하는 것을 비활성화합니다.
고정 너비 탭의 최소 너비 제어
새로운 설정 workbench.editor.tabSizingFixedMinWidth는 workbench.editor.tabSizing이 fixed로 설정되었을 때 탭의 최소 크기를 제어합니다. 고정 탭 너비에 대한 자세한 내용은 1.79 릴리스 노트에서 확인할 수 있습니다.
편집기 그룹 분할 크기 조정이 'auto'로 변경됨
workbench.editor.splitSizing 설정의 새로운 값인 auto가 새로운 기본값이 되었습니다. 이 모드에서는 편집기 그룹 중 크기가 조정되지 않은 경우에만 분할 시 사용 가능한 크기를 모든 편집기 그룹에 균등하게 분배합니다. 그렇지 않은 경우, 분할된 편집기 그룹의 공간이 절반으로 나뉘어 새 편집기 그룹에 배치됩니다.
이 변경의 의도는 분할할 때 생성한 레이아웃을 깨뜨리지 않으면서도 그렇지 않은 경우 크기를 균등하게 분배하는 이전 기본 동작을 유지하는 것입니다.
검색 .gitignore 제외 동작
search.useIgnoreFiles가 true로 설정된 경우, 작업 영역이 Git 저장소로 초기화되었는지 여부에 관계없이 작업 영역의 .gitignore가 이제 존중됩니다.
주석에 대한 최대 높이
comments.maxHeight 설정은 풀 요청에 대해 표시되는 주석의 최대 높이 제한을 비활성화할 수 있도록 합니다. 예를 들어 GitHub Pull Requests and Issues 확장을 사용할 때 해당합니다.
VS Code에서 문제 해결
명령 팔레트에 **도움말: 문제 해결**이라는 새 명령이 추가되어 VS Code의 문제를 해결하는 데 도움이 됩니다. 실행되는 워크플로는 특수 문제 해결 프로필과 VS Code의 확장 프로그램 분할 기능을 사용하여 문제의 원인을 식별하는 데 도움이 됩니다. 확장 프로그램 분할은 설치된 확장 프로그램을 이진 검색 방식으로 활성화 및 비활성화하면서 문제가 재현되는지 여부를 표시합니다. 이를 통해 문제를 일으키는 확장 프로그램을 좁히고 문제를 보고할 때 올바른 정보를 제공하는 데 도움이 됩니다.
Chromium 샌드박스 비활성화
VS Code 데스크톱을 관리자 권한 사용자로 실행해야 하는 시나리오가 있는 경우(예: Linux에서 sudo로 VS Code를 실행하거나 Windows의 AppLocker 환경에서 관리자로 실행하는 경우), 애플리케이션이 예상대로 작동하도록 하려면 --no-sandbox --disable-gpu-sandbox 명령줄 옵션으로 VS Code를 실행해야 합니다.
이슈 #184687에 대한 피드백을 바탕으로 Chromium 샌드박스를 비활성화하기 쉽게 만드는 두 가지 새로운 설정이 있습니다.
-
애플리케이션의 모든 프로세스에 대해 Chromium 샌드박스를 비활성화하는 새 명령줄 옵션
--disable-chromium-sandbox. 이 새 옵션은--no-sandbox --disable-gpu-sandbox를 대체할 수 있습니다. 이 옵션은 런타임에서 향후 릴리스에 추가될 수 있는 모든 새 프로세스 샌드박스에 적용됩니다. -
Chromium 샌드박스 비활성화를 실행 간에 지속시키려면 다음을 수행하십시오.
- 명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))를 엽니다.
- Preferences: Configure Runtime Arguments 명령을 실행합니다.
- 이 명령은
argv.json파일을 열어 런타임 인수를 구성합니다. 이미 일부 기본 인수가 표시될 수 있습니다. "disable-chromium-sandbox": true를 추가합니다.- VS Code를 다시 시작합니다.
참고: 문제가 발생하는 경우가 아니면 이 설정을 사용하지 마십시오!
편집기
선택 영역 축소 및 확장 시 하위 단어 건너뛰기
**확장** 및 **선택 영역 축소** 명령은 이제 하위 단어를 건너뛰도록 구성할 수 있습니다. 이는 editor.smartSelect.selectSubwords 설정을 통해 수행됩니다. 기본적으로 하위 단어가 선택되지만 이제 이를 비활성화할 수 있습니다.
true-> Co|deEditor가[Code]Editor를 선택한 다음[CodeEditor]를 선택합니다.false-> Co|deEditor가[CodeEditor]를 선택합니다.
이 설정은 여러 커서와 이질적인 단어에서 확장 및 축소 선택을 자주 사용할 때 유용합니다.
JSX/TSX에서 CSS 모듈에 대한 Emmet 지원 개선
Emmet는 JSX/TSX 파일에 대한 새로운 약어를 지원합니다. JSX 또는 TSX 파일에 ..test를 입력하고 약어를 확장하면 <div styleName={styles.test}></div> 줄이 추가됩니다.
속성 이름과 값 접두사는 emmet.syntaxProfiles 설정을 사용하여 구성할 수 있습니다. emmet.syntaxProfiles 설정을 다음과 같이 구성하고
"emmet.syntaxProfiles": {
"jsx": {
"markup.attributes": {
"class*": "className",
},
"markup.valuePrefix": {
"class*": "myStyles"
}
}
}
그런 다음 JSX 또는 TSX 파일에서 약어 ..test를 확장하면 대신 약어 <div className={myStyles.test}></div>가 생성됩니다.
크기 조정 가능한 콘텐츠 호버
이제 콘텐츠 호버 컨트롤의 크기를 조정할 수 있습니다. 컨트롤 테두리에 호버하고 슬라이더를 드래그하여 호버의 크기를 변경할 수 있습니다.
터미널
이미지 지원
지난 릴리스에서 미리 보기를 제공했던 터미널의 이미지가 이제 기본적으로 활성화되었습니다. 터미널의 이미지는 일반적으로 이미지 픽셀 데이터를 텍스트로 인코딩하여 특수 이스케이프 시퀀스를 통해 터미널에 쓰는 방식으로 작동합니다. 현재 지원되는 프로토콜은 sixel과 iTerm에서 개척한 인라인 이미지 프로토콜입니다.
이미지를 수동으로 테스트하려면 libsixel 리포지토리에서 .six 예제 파일을 다운로드하여 cat 할 수 있습니다.

.png, .gif 또는 .jpg 파일을 사용하여 imgcat python 패키지 또는 imgcat 스크립트를 사용합니다.

이 기능은 다음을 설정하여 비활성화할 수 있습니다.
"terminal.integrated.enableImages": false
여러 줄 및 범위 링크 형식
이제 파일을 찾기 위해 위로 스캔해야 하는 링크와 범위(줄에서 줄까지 또는 문자에서 문자까지)가 있는 링크를 포함한 새로운 링크 형식을 지원합니다.
-
@@ git 범위 링크

-
OCAML의 Dune 스타일 범위 링크



-
ESLint 스타일 여러 줄 링크

-
Ripgrep 스타일 여러 줄 링크

더 이상 사용되지 않는 shell 및 shellArgs 설정이 제거되었습니다.
terminal.integrated.shell.* 및 terminal.integrated.shellArgs.* 설정은 1년 이상 전에 터미널 프로필로 대체되었으며 방금 제거되었습니다. 이전 shell 및 shellArgs 설정을 아직 사용하고 있다면, 마이그레이션에 도움이 될 수 있는 이전/이후 예는 다음과 같습니다.
// Before
{
"terminal.integrated.shell.windows": "pwsh.exe",
"terminal.integrated.shellArgs.windows": ["-Login"],
"terminal.integrated.shell.osx": "bash",
"terminal.integrated.shellArgs.osx": ["-l"],
}
// After
{
"terminal.integrated.profiles.windows": {
"PowerShell Login": {
// Source is a special property that will use VS Code's logic to detect
// the PowerShell or Git Bash executable.
"source": "PowerShell",
"args": ["-Login"],
"icon": "terminal-powershell"
},
},
"terminal.integrated.profiles.osx": {
// This will override the builtin bash profile
"bash": {
"path": "bash",
"args": ["-l"],
"icon": "terminal-bash"
}
}
}
테스트
터미널 출력 지원
이전에는 테스트 결과 보기에 표시되는 테스트 출력이 항상 포함된 텍스트 편집기에 표시되었습니다. 이로 인해 터미널에서 실행될 때와 같이 색상, 스타일 및 기호와 같은 풍부한 스타일이 제거되었습니다. 이번 릴리스에서는 실제 xterm.js 터미널에 출력을 표시합니다.

테마: Codesong (vscode.dev에서 미리보기)
이제 테스트 결과 보기가 모든 기능을 갖추었으므로, **테스트 출력 보기** 명령은 임시 터미널을 만드는 대신 테스트 결과 보기를 열도록 리디렉션되었습니다.
소스 제어
저장소 닫기 개선
과거에는 사용자가 Git: 저장소 닫기 명령 또는 소스 제어 보드의 저장소 닫기 작업을 사용하여 저장소를 닫을 수 있었지만, 특정 작업(예: 닫힌 저장소에서 파일 열기)은 닫힌 저장소를 다시 열 수 있었습니다. 이번 마일스톤에서는 저장소가 닫혔다는 사실이 이제 작업 영역별로 유지되도록 개선했습니다. 사용자는 Git: 닫힌 저장소 다시 열기... 명령을 사용하여 닫힌 저장소를 다시 열 수 있습니다.
노트북
원격 개발의 저장 성능 향상
이전에는 VS Code의 원격 확장에서 노트북을 저장하려면 전체 노트북을 확장 호스트로 보내야 했으므로, 자동 저장이 활성화된 상태에서 큰 노트북이나 느린 네트워크 연결의 경우 느릴 수 있었습니다. 변경 사항만 확장 호스트로 보내도록 성능을 개선하여 노트북 저장 및 실행 속도를 향상시켰습니다. 이 기능은 아직 기본적으로 비활성화되어 있지만 곧 활성화할 수 있을 것으로 확신합니다. 사용해 보려면 설정에 "notebook.experimental.remoteSave": true를 추가하십시오. 자세한 내용은 이슈 #172345를 참조하십시오.
노트북 전역 도구 모음 재작업
노트북 편집기의 전역 도구 모음이 작업 영역 도구 모음을 채택하도록 다시 작성되어 사용자가 도구 모음 작업을 더 많이 사용자 정의할 수 있습니다. 이제 사용자는 마우스 오른쪽 버튼을 클릭하여 도구 모음에서 작업을 숨길 수 있습니다. 도구 모음 내에서 작업에 마우스 오른쪽 버튼을 클릭하면 해당 작업을 숨기거나 메뉴를 재설정하고 숨겨진 작업을 다시 가져오는 옵션이 제공됩니다.
도구 모음은 always, never, dynamic 세 가지 레이블 전략 모두와 계속 작동합니다. notebook.globalToolbarShowLabel 설정을 통해 레이블 전략을 변경할 수 있습니다.
테마: Monokai Pro (Filter Ristretto) (vscode.dev에서 미리 보기)
대화형 창 백업 및 복원
Python 대화형 창이 이제 핫 종료 기능과 완전히 통합되었으며 VS Code 다시 로드 간에 편집기 상태를 복원합니다. interactiveWindow.restore 설정은 더 이상 효과가 없으며 제거되었습니다.
핫 종료가 비활성화된 경우, VS Code를 닫을 때 편집기 상태를 .ipynb 파일로 저장할 수 있는 옵션을 제공하는 프롬프트가 표시됩니다.
_테마: Bearded Theme feat. Gold D Raynh (vscode.dev에서 미리 보기)
언어
Markdown 미리 보기에서 이미지 복사
Markdown 미리 보기의 이미지에 대한 새 상황에 맞는 메뉴를 통해 미리 보기에서 이미지를 복사하여 Markdown 편집기에 붙여넣을 수 있습니다. 이미지를 복사할 때 미리 보기 편집기에 포커스가 맞춰져 있어야 합니다.
Markdown 형식으로 붙여넣은 URL을 Markdown 링크로
새로운 markdown.editor.pasteUrlAsFormattedLink.enabled 설정(기본값 false)을 사용하면 Markdown 편집기에 링크를 삽입할 때 자동으로 Markdown 링크로 서식이 지정됩니다. 붙여넣을 링크로 대체할 텍스트를 선택하면 선택한 텍스트가 자동으로 링크의 제목이 됩니다. 텍스트가 선택되지 않으면 기본 링크 제목이 사용됩니다. 이 기능은 외부 브라우저 링크뿐만 아니라 작업 영역 내 파일에도 적용됩니다.
이 새로운 설정이 작동하려면 editor.pasteAs.enabled 설정을 활성화해야 합니다.
원격 개발
원격 개발 확장 프로그램을 사용하면 개발 컨테이너, SSH 또는 원격 터널을 통해 원격 머신 또는 Windows Subsystem for Linux(WSL)를 완전한 기능을 갖춘 개발 환경으로 사용할 수 있습니다.
새로운 확장 기능과 버그 수정에 대해 알아보려면 원격 개발 릴리스 노트를 확인하십시오.
원격 메뉴
이번 마일스톤에서는 원격 연결(SSH, 원격 터널, GitHub Codespaces 등)을 빠르고 쉽게 설치하고 시작할 수 있도록 원격 메뉴를 업데이트하여 필요한 확장을 설치합니다. 또한 VS Code 데스크톱에서 원격 연결을 시작하는 데 도움이 되는 환영 페이지의 **...에 연결** 시작 항목도 있습니다.
또한 vscode.dev의 환영 페이지에 원격 터널에 연결하는 시작 항목을 업데이트했습니다.
터널을 통한 WSL
지난 반복에서 원격 터널을 통해 WSL에 연결하는 것을 미리 보았습니다. 이 기능은 이제 이번 반복에서 안정화되었습니다. WSL이 설치된 Windows 머신에서 원격 터널을 실행하는 경우 원격 탐색기에서 직접 WSL에 연결하는 옵션이 있습니다.

테마: Codesong (vscode.dev에서 미리보기)
이 기능은 이제 VS Code 데스크톱과 vscode.dev 모두에서 작동합니다. 이미 Windows 장치에서 터널을 실행 중이라면 이 기능을 활성화하기 위해 VS Code를 최신 버전으로 업데이트해야 합니다.
확장 프로그램 기여
GitHub Copilot
프로젝트 및 노트북을 생성하고 작업 영역에서 텍스트를 검색하는 데 도움이 되는 채팅 보기에 미리 보기 전용 슬래시 명령을 도입했습니다.
참고: 채팅 보기, 인라인 채팅 및 슬래시 명령(예:
/search,/createWorkspace)에 액세스하려면 GitHub Copilot Chat 확장을 설치해야 합니다.
워크스페이스 생성
/createWorkspace 슬래시 명령을 사용하여 Copilot에게 인기 있는 프로젝트 유형에 대한 워크스페이스를 생성하도록 요청할 수 있습니다. Copilot은 먼저 요청에 대한 디렉터리 구조를 생성합니다.
그런 다음 **워크스페이스 생성** 버튼을 사용하여 새 작업 영역으로 프로젝트 디렉터리를 생성하고 열 수 있습니다.

노트북 생성
/createNotebook 슬래시 명령을 사용하여 요구 사항에 따라 Jupyter 노트북을 생성하도록 Copilot에게 요청할 수 있습니다. Copilot은 요구 사항에 따라 노트북 개요를 생성합니다.
그런 다음 **노트북 생성** 명령을 사용하여 노트북을 생성하고 제안된 개요에 따라 코드 셀을 채울 수 있습니다.
검색 매개변수 생성
/search 명령과 찾고 싶은 텍스트에 대한 설명으로 Copilot에게 작업 영역 검색의 검색 매개변수를 자동 완성하도록 요청할 수 있습니다.
이 미리 보기 슬래시 명령은 github.copilot.advanced 설정을 다음과 같이 구성하여 활성화할 수 있습니다.
"github.copilot.advanced": {
"slashCommands": {
"createWorkspace": true,
"createNotebook": true,
"search": true
}
}
Copilot YouTube 재생 목록
YouTube의 VS Code Copilot 시리즈에 Copilot for PowerShell을 다루는 새로운 에피소드가 있습니다. 시리즈를 놓치셨다면, 언어별 토크와 개발용 Copilot 사용 시 효과적인 프롬프트에 대한 지침도 찾을 수 있습니다.
Python
Mypy 확장
이제 Mypy Type Checker 확장이 제공되며, mypy를 사용하여 Python에 대한 유형 검사 지원을 제공합니다. 이 확장 프로그램은 미리 보기로 사전 릴리스 버전으로 제공됩니다. 이 새 확장은 현재 파일뿐만 아니라 전체 코드베이스에 대한 오류 및 경고를 제공합니다. 또한 dmypy를 사용하여 더 빠른 유형 검사를 수행합니다.
이 새 확장 프로그램에 문제가 있거나 피드백을 제공하고 싶다면, Mypy 확장 GitHub 리포지토리에 이슈를 제출할 수 있습니다.
Debugpy 확장
Python 확장에서 Python 2.7 및 Python 3.6에 대한 지원이 제거되었을 때, 코드베이스를 최신 버전의 Python으로 업그레이드하지 못하고 Python 확장 프로그램의 최신 버전으로 애플리케이션을 디버깅할 수 없었던 사용자로부터 많은 피드백을 받았습니다. 이를 해결하기 위해 Debugpy라는 별도의 Python 디버거 확장을 만들었습니다. 디버거를 Python 확장 프로그램과 분리함으로써, 나중에 Python 확장의 최신 버전과 이전 버전의 디버거를 함께 사용할 수 있게 됩니다(확장 프로그램 자동 업데이트 비활성화). 이 확장은 최신 버전의 debugpy를 사용하는 사전 릴리스 버전으로 미리 보기로 제공됩니다. 가까운 시일 내에 이전 버전의 debugpy를 지원할 계획입니다.
시험해 보고 모든 것이 제대로 작동하는지 알려주세요. 내장된 디버깅 기능을 이 별도 확장에 대신하도록 할 계획입니다.
Pylance 지역화
Pylance 확장이 이제 지역화되었습니다! 이는 VS Code에서 언어 팩을 설치하고 활성 상태로 설정한 경우 확장 프로그램의 설정, 명령 및 기타 텍스트가 기본 언어로 번역된다는 것을 의미합니다.
테스트 검색 및 실행 재작성
이번 달에는 실험으로 테스트 재작성을 계속 롤아웃하고 있습니다. 다시 말씀드리지만, 이 재작성은 확장에서 unittest 및 pytest 모두에 대한 테스트 검색 및 실행의 기반 아키텍처를 재설계합니다. 재작성은 현재 VS Code Insiders 사용자의 100%에 대해 활성화되어 있으며 이번 달에 안정 버전으로 점진적으로 출시될 예정입니다. 재작성은 곧 채택될 예정이지만, 현재로서는 옵트인 및 옵트아웃 설정인 pythonTestAdapter는 여전히 존재합니다.
pytest 및 unittest의 동적 실행 결과
새로운 실험과 함께 롤아웃되는 것은 pytest 및 unittest의 동적 실행 결과입니다. 이전에는 테스트 결과가 모든 테스트 실행이 완료된 후에만 반환되었지만, 이제 이 기능을 통해 테스트 결과가 개별적으로 제공되어 테스트가 실시간으로 통과하고 실패하는 것을 볼 수 있습니다.
타사 라이브러리 인덱스 지속
Pylance는 IntelliSense 기능(자동 완성, 자동 가져오기, 코드 탐색 등)을 사용하도록 설정하기 위해 환경에 설치된 타사 라이브러리를 인덱싱합니다. 이전에는 Pylance가 VS Code에서 작업 영역을 열 때마다 이러한 라이브러리를 인덱싱했습니다. 이제 Pylance는 이러한 라이브러리의 인덱스를 지속하여 반복적인 인덱싱 프로세스의 필요성을 줄입니다.
Python 3.7 지원 중단
Python 3.7은 2023년 6월 27일부로 수명 종료(EOL)에 도달했습니다. 따라서 Python 확장 프로그램의 Python 3.7에 대한 공식 지원은 2023.18 릴리스(VS Code의 2023년 9월 릴리스에 해당)에서 3개월 후에 중단됩니다. Python 3.7에 대한 지원을 적극적으로 제거할 계획은 없으므로, 가까운 미래에 Python 확장이 비공식적으로 Python 3.7과 계속 작동할 것으로 예상됩니다.
다른 모든 Python 릴리스는 연간 릴리스 주기로 변경되었으므로, Python 릴리스가 EOL에 도달하면 다음 달력 연도의 첫 번째 Python 확장 릴리스에서 공식 지원을 중단할 예정입니다. 예를 들어, Python 3.8은 2024년 10월에 EOL에 도달할 예정이므로, 2025년의 첫 번째 Python 확장 릴리스에서 공식 지원을 중단할 것입니다.
GitHub Pull Requests 및 Issues
풀 리퀘스트 및 이슈 관리 기능을 제공하는 GitHub Pull Requests and Issues 확장 프로그램에 더 많은 진전이 있었습니다.
- 풀 요청에서 최대 1000개(이전 100개)의 주석 스레드를 로드할 수 있습니다.
- 새로운 VS Code API 제안인 읽기 전용 메시지를 사용하면 체크 아웃되지 않은 diff에서 직접 PR을 체크 아웃할 수 있습니다.
- 트리와 주석의 아바타가 사각형 대신 원형입니다.
확장 프로그램 0.68.0 릴리스의 변경 로그를 검토하여 다른 주요 내용을 알아보십시오.
미리보기 기능
TypeScript 5.2 지원
이 업데이트에는 곧 출시될 TypeScript 5.2 릴리스에 대한 지원이 포함됩니다. TypeScript 팀이 현재 작업 중인 내용에 대한 자세한 내용은 TypeScript 5.2 반복 계획을 확인하십시오. 곧 출시될 도구 기능 중 일부는 다음과 같습니다.
- 새로운 **인라인 상수** 리팩토링.
- 기존 파일로 기호를 이동할 수 있는 새로운 **파일로 이동** 리팩토링.
TypeScript 5.2 야간 빌드를 사용하려면 TypeScript Nightly 확장을 설치하십시오.
새로운 diff 편집기
이번 반복에서 diff 편집기 재작성을 완료했습니다. 재작성을 통해 몇 가지 새로운 기능을 추가하고 성능을 개선하며 여러 버그를 수정할 수 있었습니다.
새로운 diff 편집기를 사용하려면 설정을 "diffEditor.experimental.useVersion2": true로 추가하십시오. 새 diff 편집기는 아직 실험적이지만 향후 업데이트에서 현재 diff 편집기를 대체할 것입니다.
제시된 모든 기능은 새 diff 편집기를 필요로 합니다.
변경되지 않은 영역 축소
diffEditor.experimental.collapseUnchangedRegions를 사용하여 새 diff 편집기에서 변경되지 않은 영역을 숨기는 기능을 활성화하십시오. 이 기능은 많은 변경되지 않은 코드가 포함된 대규모 diff를 검토할 때 유용합니다.
숨겨진 줄 블록의 테두리를 드래그하거나 클릭하여 위쪽 또는 아래쪽에서 코드를 표시할 수 있습니다.

삽입/삭제 표시
삽입/삭제 표시는 줄에서 단어가 삽입되거나 삭제된 위치를 나타내며, 특히 한 줄에 삽입 및 삭제가 모두 있는 경우에 유용합니다.
diffEditor.experimental.showEmptyDecorations를 사용하여 삽입 및 삭제 표시를 활성화/비활성화하십시오.

개선된 장식
전체 줄 삽입/삭제는 이제 전체 너비 배경색을 갖습니다. 이로 인해 노이즈가 크게 줄어듭니다.
다음은 새 diff 편집기가 변경 사항을 강조 표시하는 방법의 예입니다.

이것은 이전 diff 편집기가 장식을 렌더링하는 방법입니다(오른쪽의 57번 줄에 전체 너비 배경색이 없는 것을 주목하십시오).

동기식 diff 업데이트
새로운 diff 편집기에서 입력할 때 변경 사항은 휴리스틱하게 즉시 적용되고 잠시 후 비동기식 diff 계산을 트리거합니다. 이전 diff 편집기에서는 변경 사항이 즉시 적용되지 않아 입력 시 눈에 띄는 깜박임이 발생했습니다.
새로 - 입력 시 diff가 즉시 업데이트됩니다.

이전 - 눈에 띄는 깜박임이 있습니다.

이동 감지
이 실험적 기능은 파일 내에서 이동된 코드 블록을 감지합니다. diffEditor.experimental.showMoves를 사용하여 켜십시오. 현재로서는 간단한 이동만 감지되지만 향후 이 기능을 개선할 계획입니다. 이동된 코드 블록이 선택되면 원본 및 대상 위치가 정렬되고 둘 간의 diff가 표시됩니다.

이동 감지는 여전히 실험적이므로 향후 업데이트에서 상당한 변경이 있을 것으로 예상하십시오.
확장 프로그램 작성
SecretStorage API가 keytar 대신 Electron API를 사용합니다.
SecretStorage API는 몇 년 동안 암호, 액세스 토큰 등과 같은 비밀을 저장하는 데 권장되는 방법이었습니다. 내부적으로는 OS 키체인에 비밀을 저장하는 추상화 계층인 keytar를 사용해왔습니다. keytar의 지원 중단 및 보관으로 인해, 우리는 이 문제에 대한 다른 해결책을 모색했으며, 특히 우리의 런타임인 Electron에서 해결책을 찾았습니다.
이번 릴리스에서는 keytar에서 Electron의 safeStorage API로 전환을 시작했습니다. 비밀이 keytar에서 검색되어 Electron의 safeStorage API를 통해 복원되므로 이 전환은 사용자에게 투명해야 합니다. 향후 keytar에 대한 의존성을 완전히 제거하기 위해 이 마이그레이션을 제거할 것입니다.
keytar 지원 중단 계획
VS Code는 오랫동안 운영체제 키체인에 비밀 정보를 저장하는 추상화 계층인 keytar에 크게 의존해 왔습니다. 또한 VS Code에는 SecretStorage API가 도입되기 전에 확장 프로그램이 의존했던 keytar 셔(shim)가 포함되어 있었습니다. keytar 자체는 공식적으로 보관 처리되었으며 유지보수되지 않고 있습니다... 비밀 정보를 저장하기 위해 보관 처리된 소프트웨어에 의존하지 **않는** 건전한 보안 관행을 장려하기 위해 VS Code에서 이 셔을 제거하는 계획을 추진하고 있습니다.
아직 이 keytar 셔을 사용하는 인기 있는 확장 프로그램의 작성자들에게는 직접 연락하여 이를 제거하도록 협력하고 있습니다. 직접 연락하지 못한 분들을 위해 이 변경으로 인한 혼란을 최소화하고자 GitHub 토론(여기)에서도 이 내용을 공유하고자 합니다. 저희 역시 keytar 의존성을 제거하는 데 상당한 작업이 필요했기에 좋은 소식은 아니라는 것을 알고 있지만, 확장 프로그램이 안전한 API를 사용하도록 하는 것이 올바른 일이라고 믿습니다.
확장 프로그램에서 keytar를 직접 사용하는 경우 고려해 볼 수 있는 몇 가지 옵션이 있습니다.
- (권장) ExtensionContext의 VS Code에서 제공하는 SecretStorage API를 사용하세요. 이 API는 플랫폼 간 호환되며 VS Code에서 지원하는 모든 플랫폼에서 작동합니다. 또한 VS Code 팀에서 유지보수하고 있으며 계속 유지보수될 예정이며, 몇 년 동안 VS Code API의 일부였습니다.
- (권장하지 않음) 확장 프로그램에 keytar 모듈을 번들로 묶을 수 있습니다. keytar는 네이티브 Node 모듈이므로 지원하려는 각 플랫폼에 대해 플랫폼별 확장 프로그램을 게시해야 한다는 점을 명심하세요.
일정: 현재 계획은 8월 초에 VS Code Insiders에서 이 셔을 제거하는 것이며, 이는 2023년 9월 안정화 릴리스가 셔 없는 첫 릴리스가 될 것임을 의미합니다.
이 작업은 이슈 #115215에서 추적되고 있으며, 질문이 있으시면 언제든지 GitHub 토론에 질문해 주세요.
로컬 파일에 대한 vscode.fs.writeFile 성능 향상
파일에 데이터를 쓰기 위해 vscode.fs.writeFile API를 사용하는 경우(권장!), 확장 호스트에 로컬인 파일에 대한 쓰기 작업이 훨씬 빠르게 완료됩니다.
이전에는 확장 호스트가 쓰기 작업을 VS Code 클라이언트에 위임하여 실행했지만, 이제 이 작업은 확장 호스트 내에서 직접 실행되어 왕복 통신을 줄입니다.
Tree 체크박스 API
TreeItem checkboxState API가 최종 확정되었습니다. 기본적으로 체크박스가 있는 트리 항목은 VS Code에서 체크 상태를 관리합니다. 이 동작은 TreeViewOptions 속성 manageCheckboxStateManually를 true로 설정하여 변경할 수 있습니다. manageCheckboxStateManually가 설정되면 확장 프로그램은 부모 및 자식 체크박스의 체크/해제를 관리할 책임이 있습니다.
EnvironmentVariableCollection.description
이 새로운 API를 사용하면 EnvironmentVariableCollection에 대한 설명을 지정할 수 있으며, 이 설명은 터미널 탭에 마우스를 올렸을 때 사용자에게 표시되어 변경 사항이 정확히 무엇을 하는지 설명합니다.
// Example of what the Git extension could use
context.environmentVariableCollection.description =
'An explanation of what the environment changes do';
이제 변경 사항이 무엇인지 설명하는 빌트인 Git 확장 프로그램에서 API를 작동하는 것을 볼 수 있습니다.

제안된 API
모든 마일스톤에는 새로운 제안 API가 제공되며 확장 저자는 이를 시험해 볼 수 있습니다. 항상 그렇듯이 피드백을 원합니다. 제안 API를 시험해 보는 단계는 다음과 같습니다.
- 시험하고 싶은 제안을 찾아
package.json#enabledApiProposals에 해당 이름을 추가하세요. - 최신 @vscode/dts를 사용하고
npx @vscode/dts dev를 실행하세요. 그러면 해당d.ts파일이 작업 영역으로 다운로드됩니다. - 이제 제안에 대한 프로그래밍을 할 수 있습니다.
제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경 사항이 있을 수 있으며, 기존 확장을 깨뜨리는 일은 절대 없을 것입니다.
파일 시스템 공급자에 대한 읽기 전용 메시지
registerFileSystemProvider를 등록할 때 파일 시스템을 단순히 읽기 전용으로 표시하는 대신 읽기 전용 메시지를 제공할 수 있습니다. 아래 메시지는 사용자가 해당 공급자의 파일을 편집하려고 할 때 편집기에 표시됩니다.

엔지니어링
내보낸 기호의 이름 맹글링
작년에 코드 크기를 줄이기 위해 비공개 속성 및 메서드 이름을 맹글링하기 시작했습니다. 이제 내보낸 기호 이름도 맹글링하여 메인 워크벤치 JavaScript 파일 크기를 8% 더 줄였습니다.
당사의 이름 맹글링 빌드 단계는 이제 코어 VS Code 및 빌트인 확장 프로그램에 걸쳐 총 3.9MB의 JavaScript를 절약합니다. 이 감소는 다운로드를 더 빠르게 하고, VS Code 설치 크기를 줄이며, VS Code를 시작할 때마다 코드 로딩을 더 빠르게 합니다.
Node.js, 빌트인 확장 프로그램 및 Electron에 대한 체크섬 무결성 검사
빌드의 일부로, 원격 서버용 Node.js, 마켓플레이스에서 빌트인 확장 프로그램, Electron과 같은 다른 위치에서 바이너리 리소스를 사용합니다. 이번 마일스톤에서는 vscode GitHub 리포지토리에 커밋된 SHA256 체크섬과 비교하여 이러한 바이너리 리소스의 무결성을 보장합니다.
새 Linux 성능 머신
텍스트 편집기를 열고 깜박이는 커서를 보는 데 걸리는 경과 시간을 포함하여 VS Code의 성능을 매우 중요하게 생각합니다. 이 경과 시간을 모니터링하기 위해 Windows 및 macOS에서 매일 성능 테스트를 실행합니다.
이번 마일스톤에서는 테스트 세트에 Linux 머신을 추가하여 Ubuntu 22에서의 시작 시간을 보고합니다.

이벤트 이미터 최적화
VS Code는 코드베이스 전체에 걸쳐 이벤트 이미터를 광범위하게 사용합니다. 이번 반복에서 이러한 이미터를 최적화하여 시작 시간과 메모리 사용량을 약간 개선했습니다.
이 개선 사항에 대한 자세한 내용은 이슈 #185789에서 읽을 수 있습니다.
터미널 pty 호스트 개선
"Pty Host" 프로세스는 터미널에서 시작된 모든 셸 프로세스를 관리하며 여러 가지 개선 사항이 적용되었습니다.
- 성능
- 이제 pty 호스트 프로세스와 직접 통신할 수 있는 채널이 있습니다. 이로 인한 가장 중요한 변화는 터미널 입력 지연 시간 감소입니다.
- 여러 터미널이 복원될 때 불필요한 호출을 줄이고 작업을 병렬화하여 다시 연결(창 새로고침) 및 프로세스 복원(다시 시작) 성능이 향상되었습니다.
- 이제 터미널 시작 및 다시 연결에 대한 성능 메트릭을 수집하며, 이는 개발자: 시작 성능 명령을 통해 볼 수 있습니다.
- 진단
- 모든 터미널 관련 로그는 창 출력 채널에서 새 터미널 출력 채널로 이동했습니다.
- 트레이스 로그 수준이 Pty Host 출력 채널에 있을 때, 터미널은 모든 RPC 호출을 기록하므로 터미널 문제 진단에 도움이 될 것입니다.
문서
새로운 C# 토픽
새로운 C# 문서를 통해 C# Dev Kit 확장 프로그램을 사용하여 VS Code에서 C# 개발에 대해 배울 수 있습니다. 여기서는 시작 방법, 확장 프로그램의 언어 기능(코드 탐색, 리팩토링, 디버깅) 설명, 프로젝트 및 패키지 관리와 같은 개발 수명 주기 지원에 대한 내용을 찾을 수 있습니다.
Glob 패턴 참조
VS Code에는 파일 검색 및 폴더 필터링, 파일 탐색기 보기 사용자 지정 등과 같은 기능에 사용되는 자체적인 glob 패턴 구현이 있습니다. 자세한 내용을 알아보려면 새로운 Glob 패턴 참조를 검토할 수 있습니다.
주요 수정 사항
감사합니다
마지막으로, VS Code 기여자에 대한 진심 어린 감사의 말씀을 전합니다.
이슈 추적
이슈 추적에 대한 기여
- @gjsjohnmurray (John Murray)
- @starball5 (starball)
- @IllusionMH (Andrii Dieiev)
- @ArturoDent (ArturoDent)
풀 리퀘스트
vscode 기여
- @AlbertHilb: markdown-math 구성에
macros항목 추가 PR #180458 - @antonioprudenzano (Antonio Prudenzano): Feat: #132598 Windows 및 macOS에서 번역된 빌드를 실행할 경우 알림 추가 PR #181191
- @cadinsl: 사용자 및 작업 영역 탭 편집하여 접근성을 위해 이름만 표시 #184530 PR #184627
- @CGNonofr (Loïc Mangeonjean):
array.some콜백에서 부작용 제거 PR #184919 - @ChaseKnowlden: chore: inno setup에서 최소 설치 가능 버전 업데이트 PR #175818
- @cmtm (Chris Morin): Git 리포지토리에 있지 않을 때도 gitignore 파일 존중 PR #183368
- @gjsjohnmurray (John Murray)
files.dialog.defaultPath설정 구현 (fix #115730) PR #182908- 패널 제목 표시줄에 터미널 아이콘 올바르게 표시 (fix #183679) PR #183680
- Simple Browser에서 본 페이지에서 다운로드 허용 PR #185117
- @hermannloose (Hermann Loose): 주석 패널 트리 보기 아이콘의 색상 정의 수정 PR #185654
- @hsfzxjy: Fix #185858: 탭 제목 더블 클릭 시 편집기 그룹 최대화 활성화/비활성화 옵션 추가 PR #185966
- @iifawzi (Fawzi Abdulfattah): feat: 동영상 자동 재생 및 반복 재생에 대한 선택적 지원 추가 PR #184758
- @InigoMoreno (Iñigo Moreno): 빈 카테고리를 허용하도록 argv.ts 업데이트 PR #181311
- @jacekkopecky (Jacek Kopecký): tabSizingFixedMinWidth 설정 추가 (#_185766) PR #186058
- @jeanp413 (Jean Pierre)
remote.autoForwardPortsSource가 때때로 머신 설정에서 존중되지 않는 문제 수정 PR #184860- vscode 브라우저에서 xterm 검색 애드온이 두 번 로드되는 문제 수정 PR #184922
- @jhunt-scottlogic (Joshua Hunt): 테스트 탐색기 필터 UI PR #183192
- @jjaeggli (Jacob Jaeggli): 편집기 찾기 위젯에 대화 상자 역할 추가 PR #172979
- @joshaber (Josh Abernathy): 터널 팩토리가 오류를 발생할 때 터널 제거 수정 PR #186566
- @kevalmiistry (Keval Mistry): FIX: 충돌 액션 바가 완료 병합 버튼을 겹치는 문제 수정 PR #184603
- @max06 (Flo): fish에 대한 ShellIntegration 복원 (#_184659) PR #184739
- @r3m0t (Tomer Chachamu): 웹뷰에 vscode-context-menu-visible 클래스 추가 PR #181433
- @russelldavis (Russell Davis): smartSelect가 하위 단어 무시하는 옵션 추가 PR #182571
- @tisilent (xie jialong 努力鸭): gutterOffsetX 범위 조정 (dirtydiff, fold) PR #184339
- @weartist (Hans)
- 정확한 링크로 조정 PR #184011
- Fix #182013 PR #184677
- Fix #185051 PR #185431
- Fix #153590 PR #185467
- Fix:#185359 PR #185718
- @yshaojun
- fix: mergeEditor(#_183736)에서 열 1에서 커서가 보이지 않는 문제 PR #184604
- fix: 인라인 완성 기능이 표시되지 않는 문제(#_184108) PR #185215
vscode-emmet-helper에 대한 기여
- @iifawzi (Fawzi Abdulfattah): fix: 연속된 점을 노이즈로 표시하고 jinja 구문 약어 유효성 검사 무효화 PR #80
vscode-livepreview에 대한 기여
- @toyobayashi (Toyo Li): 외부 브라우저에서 콘솔 줄 번호 수정 PR #503
vscode-pull-request-github 기여
- @SKPG-Tech (Salvijus K.): 사용자 이름이 없을 때 null 수정 PR #4892