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

2020년 10월 (버전 1.51)

업데이트 1.51.1: 이번 업데이트에서는 다음 이슈들을 해결했습니다.

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


Visual Studio Code 2020년 10월 릴리스에 오신 것을 환영합니다. 10월 이터레이션 계획에서 발표한 바와 같이, 이슈 정리 가이드에 문서화된 대로 GitHub 이슈 및 풀 리퀘스트 정리 작업에 집중했습니다.

또한 GitHub 파트너와 함께 GitHub Codespaces 작업을 진행했으며, 이는 예상보다 더 많은 노력이 필요했습니다. 따라서 11월 이터레이션 일부에서도 계속해서 정리 작업을 진행할 예정입니다.

이번 정리 마일스톤 기간 동안 여러 기능 요청 및 커뮤니티 풀 리퀘스트도 처리했습니다. 새로운 기능 및 설정에 대해 계속 읽어보세요.

워크벤치

고정된 탭이 더 눈에 띄게 표시됩니다.

고정된 탭은 비활성화 상태에서도 항상 핀 아이콘을 표시하여 쉽게 식별할 수 있도록 변경되었습니다. 편집기가 고정되어 있고 저장되지 않은 변경 사항이 있는 경우, 아이콘은 두 상태를 모두 반영합니다.

Inactive pinned tabs showing pin icons

확장 트리 보기에 사용자 지정 호버 기능이 적용되었습니다.

확장 트리 보기에서 기본 툴팁을 사용하는 대신, 이제 플랫폼 간 일관성을 유지하고 전체 UX와 더 잘 어울리는 사용자 지정 호버 기능을 사용합니다.

Custom tree hover

동기화 없이 확장 설치

설정 동기화가 활성화된 상태에서 동기화 없이 확장을 설치할 수 있게 되었습니다.

Install extension without syncing

테마: GitHub Light

탐색기에서 확장 설치

VS Code는 이제 탐색기에서 VSIX 파일을 마우스 오른쪽 버튼으로 클릭하고 확장 VSIX 설치 컨텍스트 메뉴 항목을 선택하여 확장 VSIX 파일을 설치하는 것을 지원합니다.

입력 블러(blur) 명령

이제 초점을 받은 모든 입력에서 초점을 제거하는 내부 명령 workbench.action.blur가 제공됩니다. 키보드 바로가기 설정에서 이 명령에 대한 키보드 바로가기를 할당할 수 있습니다.

통합 터미널

로컬 에코

터미널에서 수정을 가하는 것은 전통적으로 터미널 프로세스로 정보를 보내고, 처리하고, VS Code로 반환해야 반영되었습니다. 이는 SSH 서버 또는 Codespace에 대한 연결 상태가 좋지 않거나 원격 연결일 때 느릴 수 있습니다.

이번 릴리스에서는 터미널에 "로컬 에코" 모드를 추가하여, 로컬에서 수행된 수정 및 커서 이동을 예측하고 서버와의 왕복 통신 없이 UI에 표시하려고 시도합니다. 기본적으로 예측된 문자는 "흐리게" 표시됩니다.

Gif showing typing with 250ms latency where characters entered immediately are dimmed

이 기능을 구성하는 데 사용할 수 있는 두 가지 설정이 있습니다.

  • terminal.integrated.localEchoLatencyThreshold는 로컬 에코가 활성화될 감지된 지연 임계값(밀리초)을 구성합니다. 이 기능을 항상 켜려면 0으로, 비활성화하려면 -1로 설정할 수 있습니다. 기본값은 30입니다.
  • terminal.integrated.localEchoStyle은 로컬 문자의 스타일 또는 색상을 구성하며, 기본값은 dim입니다.

IntelliSense

크기 조절 가능한 제안

이번 마일스톤에서는 제안 UI에 몇 가지 개선 사항이 적용되었습니다. 가장 중요한 것은 이제 크기를 조절할 수 있다는 것입니다. 제어 장치의 크기를 조절하려면 가장자리나 모서리를 드래그하세요.

Resizable Suggestions control

테마: GitHub Light, 글꼴: FiraCode

제안 목록의 크기는 세션 간에 저장 및 복원됩니다. 세부 정보 창의 크기는 세션마다 다르므로 세션당으로만 저장됩니다. 또한 editor.suggest.maxVisibleSuggestions 설정은 더 이상 사용되지 않습니다.

제안용 상태 표시줄

제안 컨트롤은 이제 창 하단에 자체 상태 표시줄을 표시할 수도 있습니다. editor.suggest.showStatusBar 설정을 사용하여 활성화할 수 있습니다. 이를 통해 세부 정보를 더 쉽게 전환할 수 있으며, 완성 항목이 삽입, 대체 또는 둘 다를 지원하는지 여부를 표시합니다.

Suggestions Status Bar

테마: GitHub Light, 글꼴: FiraCode

위 예시에서 "삽입"을 선택하면 Math.floorceil이 되고, "대체"를 선택하면 Math.floor가 됩니다.

새로운 editor.suggest.insertMode 설정을 통해 삽입 또는 대체 중 선호하는 방식을 구성할 수 있습니다. 제안 항목이 둘 다 지원하는 경우, 사용자의 선호도가 기본값으로 적용됩니다.

제안 선택 시 커서 이동

마지막으로, 제안이 표시되는 동안 커서를 이동할 수 있습니다. 예를 들어, 단어 끝에서 제안을 트리거하고 왼쪽으로 이동하여 더 많은 제안을 본 다음, 대체하여 단어를 덮어쓸 수 있습니다.

Moving cursor while suggestions are showing

테마: GitHub Light

Emmet

Emmet의 사용자 지정 스니펫이 다시 추가되었습니다. 또한 스니펫 파일 저장 또는 emmet.extensionsPath 설정 업데이트 시 스니펫이 자동으로 새로 고쳐집니다.

Emmet custom snippets working again

소스 제어

소스 제어 입력 상자, 커밋 메시지 기록 저장

SCM 커밋 기록을 탐색하기 위한 기능 요청이 처리되었습니다. 이전 및 다음 커밋을 표시하려면 각각 (Windows, Linux Up) (Windows, Linux Down)를 누르세요. 입력 상자의 첫 번째 및 마지막 위치로 직접 이동하려면 해당 화살표 키와 함께 Alt 키를 누르세요.

After typing a message in the SCM input box, then staging and committing changes, pressing the up arrow reveals the message that was just committed

Git: 태그 명령을 하위 메뉴로 이동

태그 관련 Git 명령이 ... Git 메뉴에 추가되었습니다.

Git tags submenu

Git: Rebase 명령

UI를 사용하여 브랜치를 rebase할 수 있는 새로운 Git: Rebase branch... 명령이 추가되었습니다.

Git: Recursive clone 명령

Git: Clone (Recursive) 명령을 사용하면 중첩된 Git 서브모듈을 포함하여 Git 저장소를 재귀적으로 복제할 수 있습니다.

타임라인: 이모지 단축어 렌더링

이제 타임라인 보기에서 :smile:와 같은 이모지 단축어가 렌더링됩니다.

Timeline view with emoji

언어

Markdown 스마트 선택

다음의 새로운 명령을 사용하여 Markdown 문서에서 선택 범위를 확장하고 축소할 수 있습니다.

  • 확장: ⌃⇧⌘→ (Windows, Linux Shift+Alt+Right)
  • 축소: ⌃⇧⌘← (Windows, Linux Shift+Alt+Left)

선택은 다음 항목에 적용되며, 전통적인 계층적 패턴을 따릅니다.

  • 헤더
  • 목록
  • 블록 인용
  • 울타리 코드 블록
  • HTML 코드 블록
  • 단락

Smart select within a Markdown document expands from a block element, to the block element containing it, to the rest of the content under a header, to the header itself

JavaScript 및 TypeScript용 빈 중괄호 서식 옵션

새로운 javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBracestypescript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces 서식 구성 옵션은 빈 중괄호 사이에 공백을 삽입할지 여부를 제어합니다. 이 설정의 기본값은 true입니다. 예를 들어, JavaScript의 경우

class Foo {
    doFoo() { }
}

"javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces": false 설정을 하고 코드를 서식 지정하면 다음과 같이 됩니다.

class Foo {
    doFoo() {} // Notice that the space has been removed
}

브라우저 지원

폴더 다운로드 (Edge, Chrome)

새로운 File System Access API를 활용하여, 브라우저에서 실행되는 VS Code는 이제 파일 탐색기에서 폴더를 다운로드하는 기능을 제공하여 모든 파일과 폴더를 디스크로 다운로드할 수 있습니다.

Download folder

참고: 이 기능은 Microsoft Edge 또는 Google Chrome의 최신 버전이 필요합니다.

워크스페이스 열기 알림

최상위에 .code-workspace 파일이 포함된 폴더를 열면, 이제 열겠냐는 알림이 표시됩니다. 이는 VS Code 데스크톱 버전에서는 항상 작동했으며, 이제 브라우저에서도 작동합니다.

Open workspace notification

실수로 닫히는 것 방지

워크벤치를 닫거나 떠나기 전에 확인 대화 상자를 표시하는 새로운 설정 window.confirmBeforeClose가 추가되었습니다.

가능한 값은 다음과 같습니다.

  • keyboardOnly 키 바인딩을 사용하여 닫을 때만 확인 메시지가 표시됩니다 (예: ⌘W (Windows, Linux Alt+F4)). (기본값)
  • always: 마우스 제스처로 닫더라도 항상 확인 대화 상자가 표시됩니다.
  • never: 확인 메시지가 전혀 표시되지 않습니다.

Close confirmation dialog

참고: 이 설정은 모든 경우를 포괄하지 않을 수 있습니다. 브라우저가 확인 없이 탭이나 창을 닫도록 결정할 수 있습니다.

확장 프로그램 기여

GitHub Pull Requests 및 Issues

풀 요청 및 문제를 작업, 생성 및 관리할 수 있는 GitHub 풀 요청 및 문제 확장 프로그램에 대한 작업이 계속 진행 중입니다.

모든 새로운 기능 및 업데이트에 대해 알아보려면 확장 0.21.0 릴리스의 전체 변경 로그를 확인할 수 있습니다.

원격 개발

컨테이너, 원격 머신 또는 Linux용 Windows 하위 시스템(WSL)을 전체 기능 개발 환경으로 사용할 수 있는 원격 개발 확장에 대한 작업이 계속 진행 중입니다.

1.51의 주요 기능은 다음과 같습니다.

  • 터미널 세션을 유지/재연결하는 기능.
  • 개선된 포트 포워딩 경험.

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

미리 보기 기능

미리보기 기능은 릴리스 준비가 되지 않았지만 사용할 만큼 기능적입니다. 개발 중인 동안 초기 피드백을 환영합니다.

설정 동기화

설정 동기화는 이제 확장의 전역 상태를 동기화합니다. 확장은 새로 도입된 setKeysForSync API를 사용하여 동기화할 상태를 제공해야 합니다.

프록시 자격 증명 기억

네트워크 연결이 프록시에 대한 인증을 요구할 때 표시되는 로그인 대화 상자를 재정비하고 있습니다. 새로운 설정 window.enableExperimentalProxyLoginDialog: true를 통해 이 새로운 경험을 활성화할 수 있으며, 이는 향후 릴리스에서 기본값으로 설정될 예정입니다.

Proxy Login

테마: GitHub Light

이 대화 상자는 VS Code 창 내부에 나타나며 자격 증명을 기억할 수 있는 방법을 제공하므로 VS Code를 시작할 때마다 제공할 필요가 없습니다. 자격 증명은 OS 표준 자격 증명 저장소(macOS의 키체인, Windows의 Windows 자격 증명 관리자, Linux의 GNOME 키링)에 저장됩니다.

세션당 이 대화 상자는 한 번만 표시되지만, 향후 이 결정은 재검토될 수 있습니다. 기억하도록 선택한 자격 증명이 유효하지 않은 경우 대화 상자가 다시 표시됩니다. 다시 제공하면 변경할 수 있습니다.

이 옵션을 활성화하고 예상대로 작동하지 않는 부분이 있다면 이슈 추적기를 통해 알려주시기 바랍니다.

TypeScript 4.1 베타 지원

VS Code는 TypeScript 4.1 베타 및 야간 빌드를 지원합니다. 4.1 업데이트는 재귀적 조건부 타입 지원과 같은 새로운 TypeScript 언어 기능과 도구 개선 사항을 제공합니다. 한 가지 중점 영역은 JSDoc 주석의 @see 태그에 대한 초기 지원 추가였습니다.

TypeScript 4.1 야간 빌드를 사용하려면 TypeScript Nightly 확장을 설치하세요. 피드백을 공유해 주시고 TypeScript 4.1에서 버그가 발견되면 알려주시기 바랍니다.

확장 프로그램 작성

업데이트된 확장 샘플

일부 확장 샘플을 업데이트하여 VS Code 기본 스타일을 포함시키고 색상 테마 토큰에 연결했습니다. 이는 일반적인 요소(텍스트, 버튼, 입력)가 테마 가능하며 제품의 기본 스타일과 일치함을 의미합니다. 다음은 이를 포함하는 확장입니다.

Webview style samples

트리에서의 Codicon 색상

ThemeIcon 색상 API가 최종 확정됨에 따라, 확장 개발자는 사용자 지정 트리 보기에서 Codicon에 테마 색상을 사용할 수 있습니다. (ThemeIcon 색상 API)

Tree view with icon colors

전역 상태 동기화

확장은 이제 설정 동기화가 활성화될 때 동기화될 값의 키를 globalState memento의 새로 도입된 setKeysForSync API를 사용하여 제공함으로써 전역 상태를 동기화할 수 있습니다.

/**
 * Set the keys whose values should be synchronized across devices when synchronizing user-data
 * like configuration, extensions, and mementos.
 *
 * Note that this function defines the whole set of keys whose values are synchronized:
 *  - calling it with an empty array stops synchronization for this memento
 *  - calling it with a non-empty array replaces all keys whose values are synchronized
 *
 * For any given set of keys this function needs to be called only once but there is no harm in
 * repeatedly calling it.
 *
 * @param keys The set of keys whose values are synced.
 */
setKeysForSync(keys: string[]): void;

댓글 스레드 답글 버튼 표시 여부

댓글 확장은 이제 새로운 속성인 CommentThread#canReply를 사용하여 댓글 스레드에서 답글 버튼의 표시 여부를 제어할 수 있습니다. false로 설정하면 사용자에게 댓글 스레드에서 답글 버튼이나 댓글 상자가 표시되지 않습니다.

제안된 확장 API

모든 마일스톤에는 새로운 제안 API가 제공되며 확장 작성자는 이를 사용해 볼 수 있습니다. 언제나처럼 여러분의 피드백을 원합니다. 제안된 API를 사용하려면 다음을 수행해야 합니다.

  • 제안된 API는 자주 변경되므로 Insiders를 사용해야 합니다.
  • 확장의 package.json 파일에 이 줄이 있어야 합니다: "enableProposedApi": true.
  • vscode.proposed.d.ts 파일의 최신 버전을 프로젝트 소스 위치로 복사합니다.

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

폴딩 범위 제공자 변경 이벤트

폴딩 범위 제공자는 onDidChangeFoldingRanges 이벤트를 사용하여 편집기에게 폴딩 범위가 업데이트되어야 함을 알릴 수 있습니다.

자세한 내용은 이슈 #108929를 참조하고 피드백을 제공해 주세요.

비밀번호 API

인증 제공자에 대한 지속적인 작업의 일환으로, 민감한 정보를 저장하고 검색하기 위한 API를 도입했습니다. 내부적으로 이는 VS Code가 비밀을 저장하는 데 사용하는 keytar 라이브러리의 래퍼로 작동합니다.

/**
 * Retrieve a password that was stored with key. Returns undefined if there
 * is no password matching that key.
 * @param key The key the password was stored under.
 */
export function getPassword(key: string): Thenable<string | undefined>;

/**
 * Store a password under a given key.
 * @param key The key to store the password under
 * @param value The password
 */
export function setPassword(key: string, value: string): Thenable<void>;

/**
 * Remove a password from storage.
 * @param key The key the password was stored under.
 */
export function deletePassword(key: string): Thenable<void>;

/**
 * Fires when a password is set or deleted.
 */
export const onDidChangePassword: Event<void>;

엔지니어링

VS Code를 Trusted Types 규격에 맞게 만들기

VS Code를 "Trusted Types" 규격에 맞게 만드는 노력을 계속하고 있습니다. 목표는 DOM 기반의 사이트 간 스크립팅 취약점을 방지하는 것입니다. 웹.dev의 Trusted Types 사이트에서 신뢰할 수 있는 유형에 대해 자세히 알아보고, 이슈 #103699에서 진행 상황을 팔로우할 수 있습니다.

문서

시작하기

편집기 시작을 더 쉽게 만드는 방법에 집중하고 있습니다. 웹사이트에 코딩 팩과 코딩을 처음 접하는 사람들을 위한 새로운 콘텐츠가 포함된 "코딩 배우기" 랜딩 페이지를 만들었습니다. 또한 code.visualstudio.com/learn에서 학생 친화적인 새로운 동영상과 리소스를 제작했습니다.

Learn to code

새로운 명령

명령 명령 ID
왼쪽 편집기 그룹 포커스 (순환하지 않음) workbench.action.focusLeftGroupWithoutWrap
오른쪽 편집기 그룹 포커스 (순환하지 않음) workbench.action.focusRightGroupWithoutWrap
위쪽 편집기 그룹 포커스 (순환하지 않음) workbench.action.focusAboveGroupWithoutWrap
아래쪽 편집기 그룹 포커스 (순환하지 않음) workbench.action.focusBelowGroupWithoutWrap
활동 표시줄 포커스 workbench.action.focusActivityBar

주요 수정 사항

  • 43819: Windows: 사용 중인 파일이 있는 폴더를 삭제할 때 오류 메시지가 표시되지 않음
  • 71315: 파일 삭제 후 행 포커스를 유지해야 함
  • 96522: 다중 루트 워크스페이스의 실행 구성에서 사용자 입력 변수가 작동하지 않음
  • 100255: 파일을 이동하면 이전 내용으로 모델을 직접 로드해야 함
  • 108578: onDebugDynamicConfigurations가 있는 확장은 v1.50에서 시작 시 조기에 활성화됨
  • 109088: 폴더에 대해 vscode.workspace.onWillCreateFiles/onDidCreateFiles 이벤트 전송
  • 109226: 디버그 호버가 확장/축소 중에 이동

감사합니다

마지막으로, 이번 달 VS Code에 기여해주신 다음 분들께 진심으로 감사드립니다.

이슈 추적에 대한 기여

vscode 기여

vscode-json-languageservice 기여

vscode-html-languageservice에 대한 기여

vscode-css-languageservice에 대한 기여

vscode-eslint 기여

language-server-protocol 기여

vscode-emmet-helper에 대한 기여

lsif-node 기여

debug-adapter-protocol에 기여

vscode-vsce 기여

vscode-js-debug 기여

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