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

2024년 6월 (버전 1.91)

업데이트 1.91.1: 이 업데이트는 다음 이슈를 해결합니다.

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


Visual Studio Code 2024년 6월 릴리스에 오신 것을 환영합니다. 이번 버전에는 여러분이 좋아하시길 바라는 많은 업데이트가 포함되어 있으며, 주요 내용 중 일부는 다음과 같습니다.

온라인에서 릴리스 노트를 읽으려면 code.visualstudio.com업데이트로 이동하세요. Insiders: 새로운 기능을 가능한 한 빨리 사용해 보고 싶으신가요? 야간 빌드인 Insiders를 다운로드하여 최신 업데이트를 사용할 수 있을 때 즉시 사용해 볼 수 있습니다.

접근성

편집기 호버에 대한 접근 가능한 보기

코딩 시 접근성을 개선하기 위해 접근 가능한 보기접근성 도움말 메뉴를 통해 편집기 호버 정보의 내용을 표시할 수 있습니다. 호버의 집중된 부분에 따라 집중된 부분 또는 전체 호버 내용에 대한 정보를 표시합니다.

Accessible View showing the contents of the editor hover information.

작업 공간에서 일반 텍스트와 링크를 더 쉽게 구분하려면 accessibility.underlineLinks 설정을 활성화하여 링크를 밑줄로 표시할 수 있습니다.

The run and debug view showing a mix of regular text and underlined links.

워크벤치

search.ripgrep.maxThreads 설정이 추가되어 ripgrep 검색 엔진이 사용하는 스레드 수를 제한할 수 있습니다. 이 설정은 검색이 핵심 제품 또는 확장 API를 통해 사용되는지 여부에 관계없이 적용됩니다.

search.ripgrep.maxThreads를 0이 아닌 값으로 설정하여 스레드 수를 구성합니다. 이 설정을 특정 값으로 고정하면 ripgrep 속도가 느려질 수 있으므로 주의하십시오.

추측을 위한 허용 인코딩 조정

새로운 files.candidateGuessEncodings 설정을 사용하면 files.autoGuessEncoding이 활성화될 때 고려할 인코딩 집합을 구성할 수 있습니다. 구성 순서가 우선순위를 결정합니다. 이 기능을 사용하면 감지될 수 있는 가능한 인코딩을 더 작은 집합으로 제한하고 한 인코딩을 다른 인코딩보다 우선할 수 있습니다.

프로필 편집기 미리 보기

이번 마일스톤에서는 프로필을 한 곳에서 관리할 수 있는 새로운 프로필 편집기를 도입했습니다. 이 환경에는 새 프로필 생성, 기존 프로필 편집 및 삭제, 공유를 위한 프로필 가져오기 및 내보내기가 포함됩니다. 새 프로필을 만드는 동안 프로필을 미리 보고 저장하기 전에 필요한 대로 사용자 지정할 수 있습니다. 프로필 편집기를 사용하면 특정 프로필로 새 창을 열거나 새 창에 대한 기본 프로필로 프로필을 설정할 수도 있습니다.

Profiles Editor showing all user profiles and their settings.

프로필 편집기는 workbench.experimental.enableNewProfilesUI 설정 뒤에 실험적 기능으로 사용할 수 있습니다. 사용 설정하면 창의 왼쪽 하단에 있는 설정 톱니바퀴 아이콘에서 프로필 편집기에 액세스할 수 있습니다.

Settings menu showing the Profiles menu item to open the Profiles Editor.

한번 사용해 보시고 이 경험을 어떻게 더 개선할 수 있을지에 대한 피드백을 남겨주세요.

프로필이 있는 새 창 메뉴 항목

프로필 편집기 외에도 파일 메뉴에 특정 프로필로 새 창을 여는 동작이 추가되었습니다. **파일** > **프로필이 있는 새 창** 메뉴를 사용하여 특정 프로필로 새 창을 엽니다.

Screenshot of the File menu showing the New Window with Profile menu items.

확장 설치 옵션

확장을 설치할 때 더 많은 유연성을 제공하기 위해 옵션이 추가되었습니다.

  • 확장을 동기화하지 않고 설치합니다.
  • 확장의 특정 버전을 설치합니다. 이전에는 특정 버전을 선택하기 전에 먼저 확장 최신 버전을 설치해야 했습니다.

이러한 작업은 확장 보기에서 확장의 상황에 맞는 메뉴에서 사용할 수 있습니다.

Context menu for the Extensions view, showing the additional install actions.

사용자 지정 레이블에서 파일 확장 액세스

사용자 지정 레이블을 정의할 때 이제 ${extname(N)} 구문을 사용하여 개별 파일 확장자에 액세스하는 데 더 많은 유연성이 있습니다. 또한 ${extname(N)}은 역순으로 파일 확장자를 캡처하기 위해 음수 인덱스도 지원합니다. 전체 파일 확장자를 얻으려면 ${extname}을 사용합니다.

예를 들어, 파일 tests/editor.test.ts의 경우

  • ${filename} => editor
  • ${extname} => test.ts
  • ${extname(0)} => ts
  • ${extname(1)} => test
  • ${extname(-1)} => test
  • ${extname(-2)} => ts

여러 확장 프로그램에서 사용자 지정 레이블 패턴 병합

두 확장이 configurationDefaults에서 workbench.editor.customLabels.patterns 설정에 대한 기본 구성을 제공하는 경우, 제공된 패턴이 병합됩니다.

"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout"
}
"workbench.editor.customLabels.patterns" : {
  "**/components/**/index.tsx": "${dirname} - Component"
}
확장 1에 의한 기본 기여 확장 2에 의한 기본 기여
"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout",
  "**/components/**/index.tsx": "${dirname} - Component"
}
결과 사용자 지정 레이블 패턴

테마 색상 설정 해제

테마가 마음에 들지 않는 색상이나 테두리를 설정한 경우 이제 default를 사용하여 원래 값으로 되돌릴 수 있습니다.

  "workbench.colorCustomizations": {
      "diffEditor.removedTextBorder": "default"
  }

접기 플레이스홀더 색상 변경

접기 플레이스홀더(말줄임표)는 이제 editor.foldPlaceholderForeground 색상으로 테마를 적용할 수 있습니다.

편집기

저장 시 코드 작업

editor.codeActionsOnSave 설정을 사용하면 파일을 저장할 때 자동으로 적용되는 코드 작업 집합을 구성할 수 있습니다(예: 가져오기 정리). 작업 공간 파일 및 활성 확장을 기반으로 사용 가능한 코드 작업 목록을 제공하여 이 설정을 구성하기 위한 IntelliSense를 개선했습니다.

참고: 현재 truefalse는 여전히 유효한 구성이지만, explicit, always, never로 대체될 예정입니다. 예는 저장 시 코드 작업 설명서를 참조하십시오.

읽기 전용 파일 상태 빠르게 끄기

files.readonlyInclude 설정을 통해 파일을 읽기 전용으로 구성한 경우, 이제 읽기 전용 편집기 메시지에서 파일의 읽기 전용 상태를 빠르게 전환할 수 있습니다.

Read-only editor message enabling you to toggle the read-only status.

소스 제어

들어오는/나가는 변경 사항 그래프 미리 보기

들어오는 및 나가는 변경 사항에 대한 대체 시각화를 사용해 탐색해 왔습니다. 이 마일스톤에는 들어오는 및 나가는 변경 사항을 시각화하는 그래프를 사용하는 실험적인 기능이 포함되어 있습니다. 그래프에는 현재 브랜치, 현재 브랜치의 업스트림 브랜치, 선택적 기본 브랜치가 포함됩니다. 그래프의 루트는 이러한 브랜치의 공통 조상입니다.

scm.experimental.showHistoryGraph 설정을 사용하여 이 새로운 시각화를 활성화할 수 있습니다. 사용해 보고 의견을 알려주세요. 이 시각화에서 사용할 수 있는 기능을 계속 개선하고 확장할 것입니다.

Source control view showing a graph visualization of the incoming and outgoing changes.

노트북

텍스트 선택에서 찾기

Notebook 찾기 컨트롤에 텍스트 선택 및 셀 선택에 대한 "선택 영역에서 찾기" 기능이 추가되었습니다. 이 동작은 기본적으로 활성화되며 컨트롤 내의 버튼을 통해 제어할 수 있습니다. 선택 영역의 맥락에 따라 이 버튼을 전환하면 찾기 쿼리가 하나 이상의 선택된 셀 또는 셀 내의 줄로 범위가 지정됩니다.

상황 메뉴에서 텍스트 출력 복사 또는 열기

Notebook에서 텍스트 출력으로 작업할 때 이제 텍스트 출력의 상황 메뉴를 사용하여 출력을 복사하거나 새 편집기에서 열 수 있습니다. 이 기능을 사용하면 대규모 스트리밍 출력을 더 쉽게 검토할 수 있습니다.

터미널

복사 및 붙여넣기 이스케이프 시퀀스(OSC 52) 지원

운영 체제 명령(OSC) 52 이스케이프 시퀀스가 이제 지원됩니다. 이는 터미널에서 실행되는 모든 것에 의해 사용될 수 있지만, 주요 사용 사례는 tmux의 클립보드 액세스입니다.

새로운 사용자 지정 글리프

터미널에서 이제 Powerline 기호의 브랜치, 줄 번호 및 잠금에 대한 사용자 지정 글리프를 지원합니다. 우리가 지원하는 다른 사용자 지정 글리프와 마찬가지로, 이러한 기호는 GPU 가속이 활성화된 경우 글꼴을 구성할 필요 없이 작동합니다.

Characters 0xe0a0, 0xe0a1 and 0xe0a2 render with their Powerline symbols.

이러한 기호는 글꼴 크기, 줄 높이 또는 문자 간격을 조정할 때 셀과 완벽하게 확장됩니다.

The new symbols scale vertically and horizontally when a custom font size, line height or letter spacing is used.

디버그

JavaScript 디버거

JavaScript 디버거는 이제 프로그램의 범위를 기반으로 호버링할 때와 인라인 값(debug.inlineValues 설정을 통해 활성화됨)에서 그림자 변수의 올바른 값을 표시합니다.

JavaScript code snippet that shows an overlay with the value of shadowed variables.

테마: Codesong (vscode.dev에서 미리보기)

언어

TypeScript 5.5

TypeScript 5.5이 포함되었습니다. 이 주요 업데이트에는 많은 새로운 언어 기능과 도구 개선 사항이 포함됩니다. 자세한 내용은 TypeScript 5.5 블로그 게시물을 참조하십시오.

정규식 구문 검사

TypeScript 5.5 덕분에 이제 JavaScript 및 TypeScript 정규식 리터럴에서 많은 구문 오류를 보고합니다. 여기에는 닫히지 않은 그룹, 잘못된 역참조 또는 잘못된 이스케이프와 같은 오류가 포함됩니다.

Editor showing a regex error for an invalid group caused by an extra parenthesis.

Editor showing a regex error for an invalid escape sequence

자세한 내용은 TypeScript 5.5 블로그 게시물을 참조하십시오.

확장 프로그램 기여

GitHub Copilot

간결한 인라인 채팅

인라인 채팅 렌더링이 더 간결해져 제안을 더 쉽게 읽고 이해할 수 있습니다. 또한 inlineChat.experimental.textButtons를 통해 활성화할 수 있는 더 서술적인 스타일의 버튼 텍스트를 실험하고 있습니다.

Sample of more compact inline chat in the editor.

터미널 초기 힌트

인라인 채팅을 찾는 데 도움이 되는 새로운 힌트가 터미널에 표시됩니다.

The terminal will say "Press Ctrl+I to ask GitHub Copilot to do something. Start typing to dismiss"

이 힌트는 Copilot 확장이 설치되어 있고 상호 작용이 없는 단일 터미널이 있을 때만 표시됩니다. 마우스 오른쪽 버튼을 클릭하여 메시지를 영구적으로 해제하기 쉽습니다. 터미널 인라인 채팅을 처음 사용한 후에도 메시지가 해제됩니다.

코드 블록 적용

채팅 보기의 코드 블록에 있는 **편집기에서 적용** 명령은 언어 모델을 사용하여 현재 편집기에 변경 사항을 적용하는 최상의 접근 방식을 결정합니다.

Chat view showing the Apply In Editor command for a code block in a chat response.

Python

python-environment-tools를 사용한 Python 환경 검색

전역 Python 설치 및 Python 가상 환경 검색 속도를 크게 향상시키도록 설계된 새로운 도구인 python-environment-tools를 소개하게 되어 기쁩니다. 이 도구는 Rust를 사용하여 빠르고 정확한 검색 프로세스를 보장합니다.

현재 이 새 기능을 테스트 중이며 기존 지원과 병렬로 실행하여 Python 확장 프로그램에서 새로운 검색 성능을 평가하고 있습니다. 따라서 이 새 도구를 사용한 검색 시간을 보여주는 Python Locator라는 새로운 로깅 채널이 표시됩니다.

이 개선 사항은 VS Code에서 Python 지원의 성능과 효율성을 최적화하려는 지속적인 노력의 일환입니다. 이 기능, 진행 중인 작업 및 피드백 제공에 대해 자세히 알아보려면 python-environment-tools 리포지토리를 방문하십시오.

기본 REPL에서 스마트 보내기

Python 확장 프로그램에서 이제 VS Code 기본 REPL에서 스마트 보내기를 사용하도록 설정했습니다. VS Code 기본 REPL에서 사용할 수 있습니다.

이전에는 Python 코드 줄에 커서를 놓고 Shift+Enter를 누르면 Python 확장 프로그램이 해당 줄 내용을 기본 REPL로 보냈습니다. 예를 들어 다중 줄 명령의 일부여서 실패하는 경우에도 말입니다.

이제 Shift+Enter는 중첩되지 않은 시나리오에서는 최소 실행 가능한 코드를 보내고, 중첩된 시나리오에서는 최상위 코드 블록을 보냅니다. 이를 통해 사용자는 파일 전체에서 Shift+Enter를 빠르게 눌러 최소한의 노력으로 최대한 많은 실행 가능한 코드를 실행할 수 있습니다.

reStructuredText docstring 지원

Pylance는 이제 호버 시 reStructuredText 설명문(docstring)을 렌더링하는 기능을 지원합니다!

이 기능은 초기 단계이며 다양한 Sphinx, GoogleDoc 및 Epytext 시나리오를 효과적으로 처리하기 위해 노력하고 있으므로 플래그 뒤에 있습니다. 사용해 보려면 실험적 설정 python.analysis.supportRestructuredText를 활성화할 수 있습니다.

Docstring displayed when hovering over the panel module.

이 변경 사항을 사용해 보고 문제가 있거나 피드백이 있으면 Pylance GitHub 리포지토리에 보고하십시오.

참고: 이 설정은 실험적이며 이 새로운 기능을 안정화하고 기본적으로 활성화함에 따라 향후 제거될 가능성이 높습니다.

GitHub Pull Requests 및 Issues

풀 요청 및 이슈를 작업하고, 생성하고, 관리할 수 있는 GitHub Pull Requests 확장 프로그램에 더 많은 진전이 있었습니다. 새로운 기능은 다음과 같습니다.

  • 체크아웃된 PR의 **커밋** 하위 트리에서 커밋 날짜가 표시됩니다.
  • 다수의 버그 수정.

확장 프로그램 0.92.0 릴리스의 변경 기록을 검토하여 다른 주요 내용을 알아보세요.

ESLint

ESLint 확장 프로그램이 이제 flat config 파일 형식을 지원합니다. 확장 프로그램은 여전히 eslintrc 파일을 지원하며 eslint.useFlatConfig 설정을 사용하여 어떤 구성 파일 형식을 사용할지 제어할 수 있습니다.

ESLint의 eslintrc 파일 형식 지원 중단 및 제거 계획을 이해하려면 ESLint Flat Config 롤아웃 계획을 참조하십시오.

확장 프로그램 작성

채팅 및 언어 모델 API

지난달에 확장이 채팅에 참여하고 언어 모델에 액세스할 수 있도록 하는 API를 최종 확정했지만, VS Code Insiders에서만 사용할 수 있었습니다. 이번 릴리스에서는 이러한 API를 VS Code Stable에서 완전히 사용할 수 있습니다.

이러한 API에 대해 자세히 알아보고 초기 채택자들이 어떻게 사용하고 있는지 알아보려면 공지 블로그 게시물을 확인하십시오.

시작하려면 확장 샘플채팅 확장성 설명서로 이동하십시오.

객체 설정의 기본값 처리

여러 확장이 동일한 객체 설정에 대한 기본값을 제공하는 경우, 이러한 기본값이 결합됩니다. 이는 확장 간의 충돌을 방지합니다.

DebugSessionOptions.testRun API 최종 확정

테스트 실행에서 디버그 세션을 시작하는 확장은 이제 vscode.debug.startDebugging을 호출할 때 해당 실행을 DebugSessionOptions로 전달할 수 있습니다. 전달되면 디버그 세션 다시 시작과 같은 수명 주기 작업도 새 테스트 실행을 만듭니다.

디버그 어댑터 프로토콜

디버그 어댑터 프로토콜에 몇 가지 주목할 만한 변경 사항이 있었습니다.

  • 새로운 Scope.presentationHint = returnValue 옵션으로 반환 값에 대한 표기법.
  • evaluate 요청에 소스 위치 추가. VS Code는 이를 구현하고 호버 및 인라인 값 평가 시 위치를 전달합니다.

제안된 API

언어 모델용 도구 및 함수

도구 또는 함수 호출을 가능하게 하는 API 제안을 추가했습니다. API는 두 가지 주요 부분으로 구성됩니다.

  1. 확장이 "도구"를 등록할 수 있는 기능. 도구는 언어 모델에서 사용하기 위한 기능의 일부입니다. 예를 들어 파일의 Git 기록 읽기.

  2. 도구를 지원하는 언어 모델을 위한 메커니즘: 예를 들어, 확장이 요청 시 도구를 전달하거나, 언어 모델이 도구 호출을 요청하거나, 확장이 도구 호출 결과를 다시 통신하는 것입니다.

제안은 vscode.proposed.lmTools.d.ts에서 찾을 수 있습니다.

참고: API는 여전히 활발히 개발 중이며 변경될 수 있습니다. 또한 VS Code에 적절한 기본 도구가 제공될 것으로 예상됩니다.

인증 getSessionsgetAccounts로 변경되었습니다.

다중 계정 인증 공급자를 지원하지만, 항상 누락되었던 것은 모든 세션을 가져와 특정 세션에서 작업을 수행할 수 있는 기능이었습니다. 이전에는 이를 해결하려는 getSessions API 제안이 있었지만, 실험과 인기 있는 인증 라이브러리에서 영감을 받아 이 문제를 해결하기 위해 다른 접근 방식을 취하고 있습니다.

이전 제안된 getSessions API에서 "계정"과 "세션"의 개념을 분리하는 방식으로 전환했습니다.

인증 세션을 사용하려는 확장 작성자는 다음 코드를 실행하여 사용자가 로그인한 계정의 AuthenticationSessionAccountInformation을 얻을 수 있습니다.

const accounts = vscode.authentication.getAccounts('microsoft');

여기서 해당 계정을 사용하여 해당 계정에 대한 세션을 발급할 수 있습니다.

const session = vscode.authentication.getSession('microsoft', scopes, {
  account: accounts[0]
});

참고: 이를 위해서는 인증 공급자가 새 매개변수를 처리해야 하며, 이는 아래 API 제안에서 읽을 수 있습니다.

이를 통해 여러 인증 세션을 훨씬 더 명확하게 처리할 수 있으며 이전에 지원할 수 없었던 다양한 시나리오를 처리할 수 있을 것입니다.

제안은 vscode.proposed.authGetSessions.d.ts에서 찾을 수 있으며, 이 제안은 기존 코드에 영향을 주지 않도록 이 제안에 의존하는 기존 코드와의 호환성을 위해 이전 이름을 사용합니다.

댓글 스레드 표시

댓글을 제공하는 확장이 자체 댓글 스레드를 편집기에 표시할 수 있도록 하는 API 제안을 추가했습니다. 이 API는 스레드를 표시할 때 포커스를 유지할지 또는 스레드의 답장 상자에 포커스를 맞출지에 대한 옵션을 제공합니다.

제안은 vscode.proposed.commentReveal.d.ts에서 사용할 수 있습니다.

귀속 가능한 테스트 커버리지

테스트 단위로 테스트 커버리지를 속성으로 지정하는 API를 작업 중입니다. 이를 통해 사용자는 어떤 테스트가 어떤 코드를 실행했는지 확인할 수 있으며, 편집기의 커버리지와 **테스트 커버리지** 보기의 커버리지를 모두 필터링할 수 있습니다.

자세한 내용과 업데이트는 vscode#212196을 참조하십시오.

엔지니어링

NLS를 AMD 로더에서 분리

이번 마일스톤에서 VS Code의 핵심 네이티브 언어 지원(NLS)의 비동기 모듈 정의(AMD) 로더 종속성을 제거하기 시작했습니다. 향후 목표는 ECMAScript 모듈(ESM) 로딩을 사용하고 AMD를 완전히 중단하는 것입니다. 이 방향으로 진행하기 위해 AMD 로더 플러그인 종속성을 제거합니다. 동작에는 아무런 차이가 없어야 하며, 이전에는 지원했던 모든 번역은 웹 및 데스크톱에서 여전히 지원됩니다.

주요 수정 사항

감사합니다

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

이슈 추적

이슈 추적에 대한 기여

풀 리퀘스트

vscode 기여

vscode-css-languageservice에 대한 기여

vscode-extension-samples 기여

vscode-html-languageservice에 대한 기여

vscode-languageserver-node에 기여

vscode-python-tools-extension-template에 대한 기여

node-jsonc-parser에 대한 기여

  • @Vbbab: 방문자가 콜백을 중지하도록 허용 PR #88

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