이 출시되었습니다! 11월의 새로운 기능 및 수정 사항을 읽어보세요.

2023년 3월 (버전 1.77)

업데이트 1.77.1: 이 업데이트는 다음 이슈들을 해결합니다.

업데이트 1.77.2: 이 업데이트는 다음 보안 이슈를 해결합니다.

업데이트 1.77.3: 이 업데이트는 다음 이슈들을 해결합니다.

다운로드: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Visual Studio Code의 2023년 3월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러분이 좋아하실 만한 많은 업데이트가 포함되어 있으며, 주요 변경 사항은 다음과 같습니다.

이 릴리스 노트를 온라인으로 읽으려면 code.visualstudio.com업데이트로 이동하십시오.

Insider: 새로운 기능을 최대한 빨리 사용해 보고 싶으신가요? 야간 빌드인 Insider 빌드를 다운로드하고 사용 가능한 최신 업데이트를 즉시 사용해 보세요.

접근성

터미널 접근성 버퍼 개선

화면 읽기 프로그램 사용자가 Terminal: Focus Accessible Buffer (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2))를 통해 터미널 콘텐츠에 접근할 수 있도록 하는 터미널 접근 가능 버퍼가 이제 동적으로 업데이트되며 세션이 종료될 때까지 활성 상태로 유지됩니다 (Escape 또는 Tab 사용 시).

쉘 통합이 있는 터미널에서 접근 가능 버퍼가 포커스될 때, Go to Symbol in Accessible View (⇧⌘O (Windows, Linux Ctrl+Shift+O))를 사용하면 편집기에서 Go to Symbol in Editor...와 유사하게 터미널 명령 간을 탐색할 수 있습니다.

호버 컨트롤 탐색

이제 호버 컨트롤에 포커스를 맞추고 up, down, home, end, page up, page down 키를 사용하여 가로 및 세로로 스크롤할 수 있습니다. 호버 컨트롤에 포커스를 맞추는 키보드 단축키(⌘K ⌘I (Windows, Linux Ctrl+K Ctrl+I))는 기본 커서 위치에서 호버를 표시하는 데 사용되는 것과 동일합니다.

알림의 기본 작업 수락

알림의 기본 작업을 수락하려면 사용자는 알림 센터로 이동해야 했습니다. Notifications: Accept Notification Primary Action (⇧⌘A (Windows, Linux Ctrl+Shift+A))을 사용하면 현재 컨텍스트를 벗어나지 않고 기본 작업을 실행할 수 있습니다.

Sticky Scroll 탐색

이제 Sticky Scroll 줄에 포커스를 맞추고 updown 키로 탐색할 수 있습니다. Enter 키를 사용하여 선택한 줄로 이동할 수 있습니다. Sticky Scroll에 포커스를 맞추려면 명령 팔레트에서 Focus Sticky Scroll을 실행하면 됩니다. View: Toggle Stick Scroll 명령을 통해 Sticky Scroll UI를 활성화하십시오.

워크벤치

이제 GitHub 저장소에서 작업할 때 편집기 여백에서 편집기 줄 또는 범위에 대한 심층 링크를 복사할 수 있습니다.

VS Code Desktop에서 편집기 여백에서 GitHub 영구 링크 및 HEAD 링크를 만들려면 GitHub Pull Requests and Issues 확장을 설치해야 합니다. vscode.dev에서는 GitHub 저장소에 대한 심층 링크를 즉시 사용할 수 있습니다.

이러한 작업은 편집기 탭 컨텍스트 메뉴 및 탐색기 컨텍스트 메뉴의 Share 하위 메뉴에도 추가되었습니다.

파일 내용 기반 확장 프로그램 추천

VS Code는 이제 파일 내용을 기반으로 확장 프로그램을 추천할 수 있습니다. 예를 들어, 노트북 셀 구문이 있는 Python 파일을 열면 VS Code는 해당 셀을 적절하게 렌더링하고 실행하기 위해 Jupyter 확장을 추천합니다.

Sticky Scroll용 기본 공급자 선택

Sticky Scroll(View: Toggle Sticky Scroll)은 여러 다른 콘텐츠 모델을 사용하여 헤더를 생성합니다. 이제 윤곽선 공급자 모델, 폴딩 공급자 모델 및 들여쓰기 모델 중에서 선택하여 Sticky Scroll UI에 표시할 줄을 결정할 수 있습니다. 현재 언어에 대해 모델을 사용할 수 없는 경우 VS Code는 언급된 순서대로 다음 모델로 대체됩니다. 처음에 사용된 기본 모델은 Editor > Sticky Scroll: Default Model(editor.stickyScroll.defaultModel)로 변경할 수 있습니다.

터미널

개선된 탭 호버

터미널 탭 호버는 이제 쉘의 프로세스 ID, 전체 명령줄 및 확장 환경 변수 기여에 대한 개선된 보기를 표시합니다.

Hovering the terminal tab will reveal details about the terminal, this can be triggered with the keyboard via Ctrl/Cmd+K, Ctrl/Cmd+I

소스 제어

원격 저장소에서의 Git LFS 커밋 지원

GitHub 및 Azure Repos 저장소를 편집할 때 Git LFS를 설치하지 않고도 LFS 추적 파일을 커밋할 수 있습니다. 시작하려면 VS Code Desktop에 GitHub Repositories 또는 Azure Repos 확장을 설치하고 Open Remote Repository 명령을 실행하여 저장소를 연 다음 소스 제어 보기를 사용하여 변경 사항을 커밋하십시오. 이 확장 프로그램은 .gitattributes 구성을 구문 분석하여 변경된 파일이 저장소 공급자의 Git LFS 저장소에 커밋되어야 하는지 여부를 결정합니다.

이 동작을 비활성화하려면 "githubRepositories.experimental.lfs.write.enabled": false"azureRepos.experimental.lfs.write.enabled": false를 설정할 수 있습니다.

참고: VS Code for the Web(vscode.dev)에 대한 지원은 아직 제공되지 않습니다.

3-way merge editor 문서

아직 3-way merge editor를 사용하여 병합 충돌을 해결하는 방법을 시도해 보지 않았다면, 소스 제어 문서의 3-way merge editor 섹션을 확인해 보세요. 3-way merge editor를 사용하면 들어오는 변경 사항과 현재 변경 사항을 동시에 보고 선택하고, 결과를 미리 보고, 변경 사항이 적용되기 전 파일의 기본 버전을 검토할 수도 있습니다.

3-way merge editor

또한, 3-way merge editor가 등장하는 YouTube 동영상 The EXTREMELY Helpful Guide to Merge Conflicts도 놓치지 마세요.

노트북

저장 시 형식 지정

이제 노트북에 대해 저장 시 형식 지정을 활성화할 수 있습니다. 이렇게 하면 노트북을 저장할 때 전체 노트북이 형식 지정됩니다. notebook.formatOnSave.enabledtrue로 설정하여 이 기능을 활성화할 수 있습니다.

노트북 출력에서 찾기 기본값으로 활성화

노트북에서 찾기 컨트롤을 열면 이제 기본적으로 셀 입력 및 출력에서 텍스트를 검색합니다. 필터 드롭다운의 옵션을 변경하여 이 기능을 끌 수 있습니다.

스크롤 가능한 출력 영역

notebook.output.scrolling이 true로 설정된 경우, notebook.output.textLineLimit을 초과하는 출력 및 오류는 스크롤 가능한 영역 내에 렌더링됩니다.

언어

TypeScript 5.0

VS Code는 이제 TypeScript 5.0.2와 함께 제공됩니다. 이 주요 업데이트는 새로운 TypeScript 언어 기능, 성능 향상 및 여러 중요한 개선 사항과 버그 수정이 포함되어 있습니다. TypeScript 5.0에 대한 내용은 TypeScript 블로그에서 읽을 수 있습니다.

JavaScript 및 TypeScript용 switch case 자동 완성

VS Code는 이제 JavaScript 또는 TypeScript의 리터럴 타입에 대한 switch 문을 빠르게 생성하는 데 도움을 줄 수 있습니다.

switch 문 안에 case를 입력하고 case ... 제안을 수락합니다. 이렇게 하면 해당 타입의 모든 값에 대한 case가 자동으로 삽입됩니다. 참고로 이 기능은 switch되는 값이 union 또는 리터럴 타입인 경우에만 작동합니다.

웹용 VS Code

.gitignore 지원

이번 마일스톤에서는 VS Code for the Web의 GitHub 및 Azure Repos 저장소에서 .gitignore 파일에 대한 지원이 추가되었습니다. 아래 동영상에서는 .gitignore를 통해 추적되지 않는 파일이 탐색기 보기에서 회색으로 표시되고 소스 제어 보기에 나타나지 않습니다. 이는 VS Code Desktop에서 GitHub Repositories 또는 Azure Repos 확장을 사용하여 저장소를 원격으로 탐색할 때도 작동합니다.

아래 짧은 동영상에서는 .pxt 폴더를 .gitignore에 추가하여 해당 폴더 내의 파일을 소스 제어 보기에서 숨기는 방법을 보여줍니다.

원격 개발

원격 개발 확장 프로그램을 사용하면 개발 컨테이너, SSH 또는 원격 터널을 통해 원격 머신 또는 Windows Subsystem for Linux(WSL)를 완전한 기능을 갖춘 개발 환경으로 사용할 수 있습니다.

Dev Container를 사용하면 컨테이너를 완전한 기능을 갖춘 개발 환경으로 사용할 수 있습니다. Dev Container Specification은 기존 형식에 일반적인 개발 설정, 도구 및 구성을 추가하는 방법을 모색하면서 단순화되고 오케스트레이션되지 않은 단일 컨테이너 옵션을 제공합니다. Dev Containers 및 사양에 대한 자세한 내용은 Changelog 팟캐스트 에피소드 #529에서 확인할 수 있습니다.

기타 원격 개발 하이라이트:

  • 원격 연결 - 기존 연결의 재사용 개선.
  • 원격 연결 - 로컬 개발로 신속하게 전환하기 위한 Continue Working in VS Code Desktop 명령.
  • Dev Containers - 사용되지 않는 Dev Containers 및 볼륨의 정리 용이성 향상.

원격 개발 릴리스 노트에서 새로운 확장 기능 및 버그 수정에 대해 알아볼 수 있습니다.

확장

서명 확인 실패로 인해 확장 프로그램 설치가 차단되지 않음

확장 프로그램 서명 확인에서 유효한 확장 프로그램 소수에 대해 잘못된 오류를 보고하여 설치를 방해하고 있습니다. 이러한 실패는 VS Marketplace 및 VS Code의 버그로 인해 발생하며, 저희는 수정 작업을 적극적으로 진행하고 있습니다. 확장 프로그램 사용을 원활하게 하기 위해 VS Code는 서명 확인 실패 시에도 확장 프로그램을 설치합니다. VS Marketplace 이슈 #619가 수정되면 서명 확인 검사를 다시 활성화할 것이며, 이는 다음 Stable 릴리스에서 이루어질 가능성이 높습니다.

확장 프로그램 기여

Python

심볼 이동 리팩토링

새로운 Move symbol to 코드 액션을 통해 Pylance 덕분에 Python 코드를 보다 편리하게 리팩토링할 수 있습니다!

사용해 보려면 Python 파일에서 심볼을 선택하고 표시되는 전구 아이콘(⌘. (Windows, Linux Ctrl+.))을 클릭하세요. 기존 파일로 심볼을 이동하거나 새 파일로 이동할 수 있습니다. 위치가 새 파일인 경우 심볼과 동일한 이름의 Python 파일이 생성됩니다. 적용 가능한 모든 import 참조는 심볼 이동과 함께 자동으로 업데이트됩니다.

종속성 파일에서 환경 생성

requirements.txt 또는 pyproject.toml 파일을 열면 편집기에 새로 추가된 Create Environment... 버튼이 있습니다. 이 버튼은 Python: Create Environment 명령을 실행하여 새 가상 환경을 생성하고 나열된 종속성을 설치할 수 있게 해줍니다.

A pyproject.toml file open with dependencies listed, and a Create Environment button displayed on the bottom right corner for the editor

확장 프로그램 작성자를 위한 최종 환경 API

사용자의 컴퓨터에서 사용 가능한 Python 환경을 작업하기 위한 Python 확장 프로그램의 API가 최종 확정되었습니다. 확장 프로그램은 이 API를 사용하여 Python 확장 프로그램이 스크립트를 실행하는 데 사용하는 선택된 환경 경로에 접근하거나 자체 선호하는 경로로 업데이트할 수도 있습니다.

API 사용 예시는 Python Environment APIs 위키 페이지에 있습니다. 또한 향후 npm types 패키지를 릴리스하여 Python 확장 프로그램 API의 변경 사항을 더 쉽게 추적할 수 있도록 할 계획입니다.

Jupyter

Python 환경에 대한 커널 선택기 개선

커널 선택기는 Python 런타임이 설치되어 있지 않은 경우에도 **conda 환경**을 나열합니다.

예를 들어, CLI(conda create -n envML)를 사용하여 새 conda 환경이 생성된 경우, 이 새 환경은 **Python이 없는 Conda Env** 섹션 아래의 Python Environments 목록에 표시됩니다.

그러한 환경을 선택하면 Python 런타임 및 필요한 종속성이 해당 환경에 자동으로 설치됩니다.

Notebook kernel picker with ability to select empty conda environments

GitHub Pull Requests 및 Issues

작업, 생성 및 관리할 수 있는 GitHub 끌어오기 요청 및 문제 확장에 대한 추가 작업이 이루어졌습니다. 주요 내용은 다음과 같습니다.

  • Pull Requests 보기에서 vscode.dev에서 풀 리퀘스트를 열 수 있습니다.
  • Create Pull Request 보기에서 Auto-merge 옵션을 확인하는 새 설정이 있습니다: githubPullRequests.setAutoMerge.

확장 프로그램 0.62.0 릴리스의 변경 로그를 검토하여 다른 주요 내용을 확인하세요.

GitHub Copilot

GitHub Copilot은 코드를 더 빠르고 스마트하게 작성하는 데 도움이 되는 AI 페어 프로그래머 도구입니다. VS Code의 Copilot 확장을 사용하여 코드를 생성하고, 생성된 코드로부터 배우고, 편집기를 구성할 수도 있습니다.

GitHub Copilot extension

VS Code에 대한 더 깊은 Copilot 통합 미리 보기를 발표하게 되어 기쁩니다. GitHub Copilot Chat 확장을 사용하면 다음과 같은 새로운 기능을 사용해 볼 수 있습니다.

  • 인라인 제안: 작업 중인 코드에 Copilot 제안이 인라인으로 표시됩니다.
  • 채팅 보기: GitHub Copilot Chat 보기에서 모든 작업이나 질문에 대해 Copilot에게 도움을 요청할 수 있습니다.
  • 인라인 채팅: 파일 내에서 코드를 작성하면서 Copilot과 대화할 수 있습니다.

Copilot에게 버그 찾기, 복잡한 코드 설명, 테스트 생성, 그리고 VS Code에 대한 질문까지 요청할 수 있습니다.

Copilot chat example asking how to change VS Code colors

VS Code 팀의 Copilot 경험 및 향후 계획에 대한 자세한 내용은 VS Code와 GitHub Copilot 블로그 게시물에서 확인할 수 있습니다. VS Code에서 Copilot을 사용하는 방법에 대한 자세한 내용은 GitHub Copilot in VS Code 문서를 읽어볼 수도 있습니다.

미리 보기 기능

노트북 출력 검색 지원

지난 반복에서 서식 있는 노트북 콘텐츠에 대한 전역 검색을 열린 노트북에서 지원했지만, 셀 및 Markdown 입력에 대해서만 가능했습니다. 이번 반복에서는 노트북 출력 검색을 지원합니다. 노트북을 열 때 노트북 어디를 검색할지 사용자 지정할 수 있는 토글이 있습니다. search.experimental.notebookSearch를 활성화하여 이 기능을 사용해 보세요!

시작 페이지의 원격 연결 선택기

시작 페이지가 이제 원격 연결(SSH, 원격 연결, GitHub Codespaces 등)로 시작하는 데 도움이 되는 시작 목록의 실험적 원격 연결 선택기 Connect to..를 지원합니다. 이 기능은 기본적으로 비활성화되어 있으며 workbench.remote.experimental.showStartListEntrytrue로 설정하여 활성화할 수 있습니다.

확장 프로그램 작성

곧 제공될 Electron 22 업데이트는 네이티브 모듈에 대한 변경이 필요할 수 있습니다.

다음 Stable 릴리스에서 Electron 22로 업데이트할 예정입니다. 이 업데이트는 V8 메모리 케이지 활성화로 인해 네이티브 모듈을 사용하는 확장 프로그램에 영향을 미칩니다: 외부("오프힙") 메모리를 가리키는 ArrayBuffers는 더 이상 허용되지 않습니다.

사용자 지정 메모리 할당자를 제공하여 업데이트되지 않은 네이티브 모듈도 계속 작동하도록 할 계획이지만, 할당된 외부 메모리의 사용을 검토하는 것이 좋습니다. 이 변경 사항을 적용하는 방법에 대한 자세한 내용은 Electron 블로그 게시물의 지침을 따르십시오.

지속적인 테스트 실행에 대한 지원 완료

지속적인 테스트 실행에 대한 지원이 완료되었습니다. 이 API를 사용하면 사용자가 테스트 확장 프로그램에 테스트를 "감시"하고 변경 사항이 발생할 때마다 테스트를 계속 실행하도록 알릴 수 있습니다.

const profile = ctrl.createRunProfile(/* ... */);
+profile.supportsContinuousRun = true;

function runHandler(request: vscode.TestRunRequest, cancellation: vscode.CancellationToken) {
+  if (request.continuous) {
+    startWatchingAndRunningTests(request);
+  }

  // ...
}

새로운 when 절 파서

이 VS Code 릴리스에는 when 절에 대한 새로운 파서가 포함되어 있으며, 이는 새로운 기능(예: 괄호 지원)과 더 나은 정확성을 제공하지만 더 엄격한 규칙도 적용합니다. 이 릴리스에는 확장 프로그램 매니페스트 파일(package.json)의 when 절에 대한 린터가 포함되어 구문이 올바른지 확인합니다. 새 파서로 인해 발생할 수 있는 잠재적인 중단을 위해 when 절을 확인하는 것이 좋습니다. 또한 when 절에서 괄호를 사용하는 경우 확장 프로그램은 VS Code 버전 1.77 이상과 호환됩니다. 변경 사항에 대한 자세한 내용은 이슈 #175540에서 확인할 수 있습니다.

소스 제어 입력의 인라인 완성

소스 제어 입력 상자가 이제 인라인 완성을 지원합니다.

The inline suggestions extension sample running in the Source Control input

소스 제어 입력 상자의 문서 언어 식별자scminput입니다.

제안된 API

모든 마일스톤에는 새로운 제안 API가 제공되며 확장 저자는 이를 시험해 볼 수 있습니다. 항상 그렇듯이 피드백을 원합니다. 제안 API를 시험해 보는 단계는 다음과 같습니다.

  1. 시험하고 싶은 제안을 찾아 package.json#enabledApiProposals에 해당 이름을 추가하세요.
  2. 최신 vscode-dts를 사용하고 vscode-dts dev를 실행하세요. 이 명령은 해당 d.ts 파일을 작업 공간으로 다운로드합니다.
  3. 이제 제안에 대한 프로그래밍을 할 수 있습니다.

제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경 사항이 있을 수 있으며, 기존 확장을 깨뜨리는 일은 절대 없을 것입니다.

편집기 여백 제안 컨텍스트 메뉴

editor/lineNumber/context 제안 메뉴는 편집기 여백 및 편집기 줄 번호에 고정되며 특정 줄에 대한 컨텍스트별 확장 프로그램 작업을 표시하는 방법을 제공합니다.

개발 중에 사용해 보려면 contribEditorLineNumberMenu API 제안을 활성화하세요. 이 메뉴에 기여된 작업은 명령 인수로 줄 번호를 받으며 when 절에서 editorLineNumber 컨텍스트 키를 참조할 수 있습니다. API 제안 이슈 #175945에 피드백을 남길 수 있습니다.

노트북 수명 주기 이벤트: onWillSaveNotebookDocument

onWillSaveNotebookDocument 이벤트는 노트북 문서가 저장되기 전에 발생합니다. 이 이벤트는 노트북 문서가 저장되기 전에 작업을 수행하려는 확장 프로그램에 유용합니다. 예를 들어, 저장하기 전에 노트북 셀 출력을 정리하려는 확장 프로그램은 이 이벤트에 대한 수신기를 등록하고 적용할 셀 출력 편집을 반환할 수 있습니다.

확장 프로그램이 이 이벤트에 대한 수신기를 등록하는 방법은 다음과 같습니다.

vscode.workspace.onWillSaveNotebookDocument(e => {
    if (event.reason == vscode.NotebookDocumentSaveReason.Manual) {
      event.waitUntil(new Promise((resolve) => {
        const notebookEdit = new vscode.NotebookEdit(...);
        const edit = new vscode.WorkspaceEdit();
        edit.set(event.document.uri, [notebookEdit]);
        resolve([edit]);
      }));
    }
});

엔지니어링

Windows 8 및 8.1에 대한 EOL 경고

VS Code Desktop은 다음 몇 가지 마일스톤에서 Electron >=23으로 업데이트될 예정입니다. Electron 23 업데이트와 함께 VS Code Desktop은 Windows 8/Windows Server 2012 및 Windows 8.1/Windows Server 2012 R2에서는 더 이상 실행되지 않습니다. 이번 마일스톤에서는 영향을 받는 플랫폼의 사용자에게 마이그레이션을 준비하기 위한 지원 중단 알림을 추가했습니다. 이러한 Windows 버전 중 하나를 실행 중인 경우 추가 정보는 FAQ를 참조하십시오.

Snap 패키지에 대한 기본 이미지 업데이트

이번 반복에서는 Snap 패키지를 업데이트하여 이전 Core(Ubuntu 16.04 기반) 대신 Core20(Ubuntu 20.04 기반)을 기본 이미지로 사용했습니다. 이 변경 사항은 CLI의 누락된 GLIBC 기호를 해결하고 Wayland 지원을 포함한 기타 문제를 수정합니다. 풀 리퀘스트 #127320에서 더 많은 컨텍스트를 찾을 수 있습니다.

확장 프로그램 호스트에 대한 사용자 지정 메모리 할당자 탐색

V8 샌드박스가 활성화된 Electron 22를 채택하고 외부 배열 버퍼를 특별히 사용하는 네이티브 모듈에 의존하는 확장 프로그램에 대한 영향을 최소화하기 위해 확장 프로그램 호스트의 기존 메모리 할당자를 사용자 지정했습니다. 특히, 확장 프로그램 호스트는 치명적인 충돌을 피하기 위한 해결책으로 이러한 네이티브 모듈의 할당을 V8 샌드박스 내에서 수용합니다. 이 솔루션에 대한 자세한 내용이 궁금하신 경우 이슈 #177338에서 자세한 내용을 검토할 수 있습니다.

문서

새로운 프로그래밍 언어 주제

주요 수정 사항

  • 174690 댓글 API - author.iconPath가 확장 프로그램과 함께 번들로 제공된 파일을 참조할 수 있는 방법은 무엇인가요?
  • 175805 VS Code에서 포트 전달을 위해 IPv6 프로세스를 자동 감지하지 않음

감사합니다

마지막으로, VS Code 기여자에 대한 진심 어린 감사의 말씀을 전합니다.

이슈 추적

이슈 추적에 대한 기여

풀 리퀘스트

vscode 기여

vscode-languageserver-node에 기여

vscode-pull-request-github 기여

  • @Balastrong (Leonardo Montini)
    • 모든 라벨을 제거하기 위해 set-labels에 빈 라벨 배열을 푸시할 수 있도록 허용 PR #4637
    • 마지막 라벨을 제거하기 위해 빈 배열을 푸시할 수 있도록 허용 PR #4648

vscode-docs 기여

monaco-editor 기여

devcontainers/cli에 대한 기여

© . This site is unofficial and not affiliated with Microsoft.