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

2019년 10월 (버전 1.40)

업데이트 1.40.1: 이번 업데이트는 다음 이슈를 해결했습니다.

업데이트 1.40.2: 이번 업데이트는 다음 이슈를 해결했습니다.

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


Visual Studio Code의 2019년 10월 릴리스에 오신 것을 환영합니다. 10월 반복 계획에서 발표한 바와 같이, GitHub 이슈 및 풀 리퀘스트의 정리 작업에 집중했으며, 이는 이슈 정리 가이드에 문서화되어 있습니다. VS Code의 모든 리포지토리에서 총 4622개의 이슈를 닫았습니다(트리아지 또는 수정 완료). 이는 2018년 9월의 마지막 정리 주기에서 닫았던 3918개의 이슈보다 많은 수입니다. 이슈를 닫는 동안 사용자는 2195개의 새 이슈를 생성했습니다. 결과적으로 이슈가 2427개 순감소했습니다. 주요 vscode 리포지토리에는 현재 2162개의 열린 기능 요청과 725개의 열린 버그가 있습니다. 또한 287개의 풀 리퀘스트를 닫았습니다. 이러한 노력의 일환으로 프로세스를 조정하고 이슈 트리아징 워크플로를 업데이트했습니다.

작년과 마찬가지로, Benjamin Lannon라이브 트래커를 사용하여 진행 상황을 추적했습니다.

Burn down chart of VS Code issues

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

워크벤치

활동 표시줄 표시기

활동 표시줄의 활성 항목을 더 잘 돋보이게 하고 가독성을 높이기 위해 새로운 표시기를 도입했습니다. 또한 비활성 전경색을 조정하여 활성 요소와의 대비를 더 강화했습니다.

Active Activity Bar indicator

새로운 색상 토큰인 activityBar.activeBorder를 통해 활성 표시기를 제어할 수 있습니다. 또한 활성 요소에 대한 선택적 배경색인 activityBar.activeBackground를 도입했으며, 이를 구성하면 다음과 같이 보일 수 있습니다.

Active Activity Bar indicator custom background

테마 가능한 창 테두리

VS Code 창 주위에 테두리를 제공하기 위해 두 개의 새 테마 색상인 window.activeBorderwindow.inactiveBorder를 도입했습니다. window.activeBorder는 활성(포커스된) 창에 적용되고, window.inactiveBorder는 비활성(포커스되지 않은) 창에 적용됩니다. 이 새 색상은 어떤 색상에서도 상속되지 않으므로 테마 또는 workbench.colorCustomizations 설정을 통해 제공해야 합니다. 색상이 하나만 지정된 경우 해당 색상의 테두리가 활성 및 비활성 창 모두에 적용됩니다.

Animated image showing the use of the new window border colors

목록 및 트리 키보드 스크롤

이제 키보드를 사용하여 목록 및 트리를 스크롤하려면 ⌘↑ (Windows, Linux Ctrl+Up)⌘↓ (Windows, Linux Ctrl+Down)를 누를 수 있습니다.

젠 모드에서의 알림 감소

젠 모드 사용 중에는 오류를 알리는 알림이 아니면 알림 토스트가 더 이상 방해가 되지 않습니다. 새 zenMode.silentNotifications 설정을 사용하여 이 동작을 제어할 수 있습니다. 오른쪽 하단 모서리에 있는 알림 아이콘을 클릭하여 상태 표시줄에서 항상 모든 알림에 액세스할 수 있습니다.

개요 및 탐색 경로에 대한 유형 필터

개요 보기와 탐색 경로 탐색에 표시되는 심볼을 구성하는 새 설정이 있습니다. 이 설정은 outline.show{symbol type}breadcrumbs.show{symbol type}입니다. 예를 들어 outline.showVariables, outline.showFunctions 등입니다.

Filtered Outline view

위 스크린샷은 로컬 변수를 표시하지 않도록 구성된 개요 보기를 보여주며, 변수 hidden이 표시되지 않는 것을 볼 수 있습니다.

참고로, 심볼의 유형을 할당하는 것은 언어 확장에 달려 있습니다. 개요 보기에서 심볼 레이블에 마우스를 올리면 사용되는 심볼 유형(괄호 안)을 볼 수 있습니다.

편집기 분할 시 크기 조정 동작 제어

새 설정 workbench.editor.splitSizing은 편집기를 분할할 때 편집기의 레이아웃을 제어합니다. 기본적으로 아래 그림과 같이 모든 편집기 간에 크기가 균등하게 분배됩니다.

splitSizing with distribute value

이 설정을 split으로 변경하면 현재 편집기가 반으로 분할되고 다른 편집기의 크기에는 영향을 주지 않습니다.

splitSizing with split value

GPU 가속 비활성화

GPU가 VS Code UI 렌더링에 사용되는 방식과 관련된 문제 보고를 받았습니다. 이 사용자들은 --disable-gpu 명령줄 인수를 추가하여 VS Code를 실행할 때 훨씬 더 나은 경험을 얻습니다. 이 인수를 사용하여 실행하면 GPU 하드웨어 가속이 비활성화되고 소프트웨어 렌더러로 대체됩니다.

더 쉽게 사용하기 위해 이 플래그를 설정으로 추가하여 매번 명령줄에서 전달할 필요가 없도록 할 수 있습니다.

이 플래그를 추가하려면

  • 명령 팔레트 (⇧⌘P (Windows, Linux Ctrl+Shift+P))를 엽니다.
  • Preferences: Configure Runtime Arguments 명령을 실행합니다.
  • 이 명령은 런타임 인수를 구성하기 위해 argv.json 파일을 엽니다. 이미 기본 인수 일부가 표시될 수 있습니다.
  • "disable-hardware-acceleration": true를 추가합니다.
  • VS Code를 다시 시작합니다.

참고: 문제가 발생하는 경우를 제외하고는 이 설정을 사용하지 마십시오!

편집기

언어별 files.eol

files.eol 설정은 이제 언어별로 설정할 수 있습니다. 예를 들어, 'mylanguage' 언어 식별자의 모든 파일이 새 파일 전체에 대해 기본 줄 끝 시퀀스로 \n을 사용하도록 정의할 수 있습니다.

"[mylanguage]": {
   "files.eol": "\n"
}

줄 끝 시퀀스는 새 파일에 사용됩니다. 기존 파일의 경우 현재 줄 끝 시퀀스는 항상 유지됩니다. 기존 파일의 줄 끝 시퀀스를 변경하려면 **줄 끝 시퀀스 변경** 명령을 사용하십시오.

files.eol 언어 설정을 사용하면 'shellscript'의 기본 줄 끝 시퀀스가 이제 \n으로 정의됩니다.

미니맵 스케일링 및 향상된 글꼴 렌더링

새 설정 editor.minimap.scale은 특히 고 DPI 또는 울트라 와이드 디스플레이에 유용한 여러 상수 값 중 하나로 미니맵의 크기를 구성합니다. 또한 미니맵 글꼴 렌더링이 더 부드럽고 명확해졌습니다.

Animated image showing the ability to resize the minimap

키보드를 통한 정의 미리 보기 호버

정의 미리 보기 호버 위젯에 대한 접근성을 높이기 위한 새 명령 정의 미리 보기 호버 표시가 있습니다. 이 위젯은 마우스로 심볼에 호버하고 플랫폼 및 구성에 따라 수정자 키를 누르면 트리거할 수 있습니다. 이전에는 호버 표시 명령만 제공되었으며, 이는 마우스 커서를 심볼에 호버하는 것과 동일합니다. 이제 정의 미리 보기 호버 표시를 사용하면 키보드를 통해 자세한 호버 정보를 표시할 수 있습니다.

Animated image showing the use of the new Show Definition Preview Hover command

괄호 일치 개선

이전에는 VS Code에서 커서가 괄호 문자 옆에 있을 때만 일치하는 괄호를 강조 표시했습니다. 이제 VS Code는 포함된 괄호가 있으면 항상 강조 표시합니다.

Image showing highlighted enclosing brackets

또한 괄호로 이동괄호까지 선택 동작을 포함된 괄호를 사용하도록 조정했습니다.

선택 영역 복제

선택 영역 복제라는 새 동작을 추가했습니다. 이 동작이 실행되면 현재 선택 영역이 복제되고 결과가 선택됩니다. 선택 영역이 없으면 현재 줄이 복제되며, 모두 시스템 클립보드에 쓰지 않습니다.

글꼴 기능 설정

글꼴 기능에 대한 더 세분화된 제어가 가능해졌습니다. "editor.fontLigatures": true를 구성하면 VS Code는 ligacalt를 켭니다. 하지만 일부 글꼴에는 Fira Code에서 사용하는 스타일 세트와 같은 더 많은 설정이 있습니다.

이제 이러한 글꼴 기능을 명시적으로 제어할 수 있습니다. 예를 들어

"editor.fontFamily": "Fira Code",
"editor.fontLigatures": true,
"[javascript]": {
  "editor.fontLigatures": "'ss02', 'ss19'",
},

위 설정은 편집기가 Fira Code 글꼴 패밀리를 사용하도록, 모든 언어에 대해 글꼴 리거처를 켜고, JavaScript 파일에서는 '가로 막대'(ss02) 및 '점선 0'(ss19) 글꼴 기능 설정을 활성화하도록 구성합니다. 이를 통해 JavaScript에서 >= 리거처가 가로 막대로 렌더링되고 0이 내부의 점으로 렌더링됩니다.

Image showing font feature settings in the editor

유니코드 결합 문자 처리 개선

유니코드 결합 문자 처리가 개선되었으며, 이러한 시퀀스를 원자 문자(커서 이동, 편집 작업 또는 블록 커서 렌더링)로 처리합니다. 이는 블록 커서 스타일과 이전/이후 애니메이션을 사용하여 가장 잘 보여줄 수 있습니다.

이전
Animation showing cursor movement before

이후
Animation showing cursor movement after

관련 변경 사항으로, 상태 표시줄의 Col 섹션에 유니코드 포인트 수가 표시됩니다.

커서 다시 실행

소프트 실행 취소 명령이 커서 실행 취소로 이름이 변경되었습니다. 이 동작은 예를 들어 ⌘D (Windows, Linux Ctrl+D)를 사용하여 다음 일치를 선택하고 한 번 지나친 경우에 유용합니다. 마지막 커서 상태 변경만 실행 취소하기 때문입니다. 또한, 이전에 실행 취소된 커서 상태 변경을 다시 실행하는 커서 다시 실행이 추가되었습니다.

차이점 편집기 개선

내장 차이점 계산은 5초의 하드코딩된 타임아웃이 있어, 이 시간이 지나면 포기하고 최소가 아닌 차이점을 반환했습니다. 이제 "diffEditor.maxComputationTime"을 사용하여 이 타임아웃을 구성할 수 있으며, 타임아웃을 0으로 설정하면 아무리 오래 걸리더라도 항상 최소 차이점을 계산합니다. 또한, 차이점 계산에 1초 이상 걸리면 차이점 편집기에 진행률 표시줄이 렌더링됩니다.

차이점 편집기 사용 시 혼란의 원인은 선행 또는 후행 공백만 다른 파일을 비교할 때 차이점 편집기가 공백 트리밍을 무시하도록 구성된 경우였습니다. 이로 인해 소스 제어에서는 파일이 수정된 것으로 표시되지만 차이점 편집기에서는 차이점을 렌더링하지 않았습니다. VS Code는 이제 이 경우를 감지하면 **공백 차이점 표시** 버튼을 표시하여 공백 차이점을 빠르게 표시하도록 돕습니다. 이 기능은 차이점 편집기 상단의 **선행/후행 공백 차이점 표시/무시** 명령을 사용하여 전환할 수 있습니다.

Animation for button that shows when comparing two files that contain only whitespace diffs but the diff editor is configured to ignore trim whitespace

통합 터미널

이제 기본적으로 코드 지원

새 설정 terminal.integrated.allowChords(기본값 true)는 코드 키 바인딩의 일부인 키 바인딩이 평가를 위해 터미널을 건너뛰고 VS Code에서 처리되도록 허용합니다(terminal.integrated.commandsToSkipShell 허용 목록을 우회).

참고로 터미널의 키 바인딩에 대한 동일한 제한 사항이 여전히 적용됩니다. 이 평가를 할 때 가장 우선순위가 높은 코드 키 바인딩이 고려됩니다.

예를 들어, 확장 프로그램이 키 바인딩 Ctrl+M A를 제공하고 keybindings.json 파일에 다음과 같이 정의되어 있다면

[
  { "key": "ctrl+m a", "command": "workbench.action.terminal.toggleTerminal" },
  { "key": "ctrl+m a", "command": "workbench.action.focusLastEditorGroup" }
]

Ctrl+M A는 마지막 키 바인딩이므로 workbench.action.focusLastEditorGroup 명령이 실행됩니다. 사용자 키 바인딩이 확장 프로그램에서 제공하는 키 바인딩보다 우선순위가 높습니다.

빠른 스크롤 지원

터미널에서 이제 Alt 키와 마우스 휠을 함께 사용하여 editor.fastScrollSensitivity 설정에 정의된 배율에 따라 더 빠르게 스크롤할 수 있습니다.

오른쪽 클릭 동작에 대한 새 "붙여넣기" 옵션

터미널에서 오른쪽 클릭 시 항상 붙여넣도록 rightClickBehavior 설정에 새 옵션이 추가되었습니다.

"terminal.integrated.rightClickBehavior": "paste"

두 번 클릭하여 단어 선택 시 더 많은 구분 기호 사용

이제 ,, :, ; 문자가 터미널에서 두 번 클릭하여 단어를 선택할 때 단어 구분 기호로 간주됩니다.

터미널의 초기 작업 디렉터리가 심볼릭 링크로 설정된 경우, 심볼릭 링크는 터미널에 유지됩니다.

스크롤 위치에서 명령 탐색 작동

명령 탐색을 사용하면 터미널에서 실행된 명령 간에 이동하거나 선택할 수 있습니다. 이제 터미널의 스크롤 위치를 고려하므로 스크롤하고 이전 명령을 찾으면 터미널이 터미널 뷰포트에서 위로 스크롤됩니다(이전에는 바닥에서 스크롤되었습니다).

Command navigation jumps to nearest command after scrolling

명령 탐색은 기본적으로 macOS에서만 Cmd+Up/Down으로 바인딩되며, 명령 선택은 Cmd+Shift+Up/Down으로 바인딩됩니다.

Windows 또는 Linux에서 이 기능을 사용하려면 다음과 같은 예제 키 바인딩을 참조하십시오.

{
  // Terminal command tracking on Windows and Linux
  { "key": "ctrl+up",          "command": "workbench.action.terminal.scrollToPreviousCommand", "when": "terminalFocus" },
  { "key": "ctrl+down",        "command": "workbench.action.terminal.scrollToNextCommand", "when": "terminalFocus" },
  { "key": "ctrl+shift+up",    "command": "workbench.action.terminal.selectToPreviousCommand", "when": "terminalFocus" },
  { "key": "ctrl+shift+down",  "command": "workbench.action.terminal.selectToNextCommand", "when": "terminalFocus" },
}

작업

작업 빠른 선택 목록

작업: 작업 구성 명령은 이제 정의된 작업이 하나뿐인 경우 항상 빠른 선택 목록을 건너뜁니다. 이 동작을 작업: 작업 실행 및 기타 작업 빠른 선택으로 확장하려면 task.quickOpen.skip 설정을 true로 설정할 수 있습니다.

새 설정 task.quickOpen.history는 작업 빠른 선택에 **최근 사용한** 작업으로 표시되는 작업 수를 제어합니다. 최근 작업 섹션을 비활성화하려면 task.quickOpen.history0으로 설정하십시오.

detail 속성을 가진 작업은 이제 일부 작업 목록에 표시됩니다. task.quickOpen.detailfalse로 설정하면 작업 빠른 선택에서 세부 정보를 끌 수 있습니다.

폴더에 대한 NPM 스크립트 실행 옵션

npm.enableRunFromFolder 설정이 활성화되면 파일 탐색기의 컨텍스트 메뉴에 폴더가 선택될 때 폴더에서 NPM 스크립트 실행... 명령이 표시됩니다. 이 명령은 해당 폴더에 포함된 NPM 스크립트의 빠른 선택 목록을 표시하고 스크립트를 작업으로 실행하도록 선택할 수 있습니다.

느린 작업 공급자 경고

작업 공급자가 느리게 실행될 때, 지연을 피하는 방법에 대한 제안을 제공하는 경고가 표시됩니다. 개별 작업 유형에 대해 경고를 비활성화하거나, task.slowProviderWarningfalse로 설정하여 모든 작업에 대해 경고를 비활성화할 수 있습니다.

Slow task provider warning

작업 자동 감지 비활성화

원하는 모든 작업이 tasks.json 파일에 정의되어 있다면, 작업을 실행할 때 성능을 향상시키기 위해 모든 확장 프로그램 작업 공급자를 비활성화하고 싶을 수 있습니다. 개별 확장 프로그램이 작업 공급자를 비활성화하는 설정을 제공하는 것은 좋은 관행이지만, 이제 task.autoDetectoff로 설정하여 모든 작업 공급자를 비활성화할 수 있습니다.

문제 해결사 프롬프트

이전에는 문제 해결사가 없는 작업은 문제 해결사 프롬프트를 건너뛰려면 tasks.json에 빈 문제 해결사를 설정해야 했습니다. 이제 task.problemMatchers.neverPrompt를 사용하여 모든 작업 또는 특정 작업 유형에 대해 문제 해결사 프롬프트를 비활성화할 수 있습니다. 문제 해결사 프롬프트에 프롬프트를 비활성화하는 새 옵션도 있습니다.

Problem matcher prompt dropdown

소스 제어

활성 편집기 변경 시 파일 강조 표시

소스 제어 보기가 이제 트리/목록 보기에서 활성 편집기 파일을 자동으로 강조 표시합니다.

SCM view highlighting the active file

Git: 추적되지 않은 파일 관리 개선

이제 Git: 추적되지 않은 변경 사항 설정을 사용하여 추적되지 않은 파일을 별도로 관리할 수 있습니다. 소스 제어 보기에 추적되지 않은 파일을 별도의 그룹으로 보려면 separate 옵션을 선택하십시오. 보이지 않게 하려면 hidden을 선택하십시오. 기본 커밋 동작은 이 설정에 맞춰 조정되며, mixed 설정 값을 사용할 때만 추적되지 않은 변경 사항을 커밋에 포함합니다.

Git untracked files

Git: 병합 커밋 시 자동 커밋 메시지

VS Code가 Git 병합 커밋 중간임을 감지하면 Git의 기본 커밋 메시지로 커밋 입력 상자를 자동으로 채웁니다.

Git merge commit message

Git: 탐색기에서 보기

이제 소스 제어 보기에서 Git 리포지토리의 파일을 파일 탐색기에서 표시하는 컨텍스트 메뉴 작업 탐색기에서 보기가 있습니다.

Git Reveal in Explorer

Git: 복제 진행률

복제 작업이 이제 오른쪽 하단 알림에 진행률을 표시하는 것을 지원합니다.

Git clone progress

디버깅

개요 눈금자에 중단점 표시 가능

큰 파일에서 중단점을 작업할 때 편의를 위해 새 설정 debug.showBreakpointsInOverviewRuler를 활성화하여 편집기의 개요 눈금자에 중단점을 표시할 수 있습니다.

breakpoints in overview ruler

복합 디버그 구성에 대한 PreLaunch 작업

오늘날 모든 디버그 구성은 preLaunchTask 속성을 통해 디버그 세션 시작 전에 실행될 작업을 지정할 수 있습니다. 이는 단일 프로그램을 디버깅할 때 잘 작동하지만, 여러 프로그램이 관련된 복합 구성을 사용할 때는 번거로워집니다.

이번 마일스톤에서는 복합 디버그 구성당 preLaunchTask 지원을 추가했습니다. 이를 통해 단일 작업으로 개별 디버그 세션이 시작되기 전에 모든 디버그 대상을 빌드할 수 있습니다. 빌드 오류 발생 시 세션이 시작되지 않습니다.

prelaunch task for compound debug configurations

언어

CSS 미디어 쿼리 심볼

CSS/SCSS/Less 파일에서 미디어 쿼리 심볼이 이제 개요 보기, 탐색 경로, **파일 내 기호로 이동** 목록에 표시됩니다.

CSS media query symbols

typescript.tsserver.maxTsServerMemory

수천 개의 파일을 포함하는 대규모 TypeScript 프로젝트로 작업하는 경우, 새 typescript.tsserver.maxTsServerMemory 설정을 사용하여 IntelliSense를 지원하는 TypeScript 서버의 최대 메모리 사용량을 늘릴 수 있습니다.

확장 프로그램 작성

vscode.env.uiKind

확장 프로그램이 어떤 UI 종류에서 실행되는지 알 수 있도록 새 API vscode.env.uiKind가 추가되었습니다. 브라우저에서 VS Code를 실행하는 것을 지원하기 위해 가능한 값은 UIKind.WebUIKind.Desktop입니다.

호출 계층 구조 공급자 API

호출 계층 구조 공급자 API: CallHierarchyProvider를 완성했습니다. 이 API는 함수, 메서드 등의 호출자 및 호출 대상 함수를 찾는 호출 계층 구조 보기 기능을 지원합니다.

Task CustomExecution

CustomExecution 작업 유형 API가 완성되었습니다. 셸 또는 프로세스 작업이 적합하지 않은 경우, CustomExecution 작업을 사용하여 확장 프로그램 내에서 콜백을 실행할 수 있습니다. 자세한 내용은 작업 공급자 확장 프로그램 가이드를 참조하십시오.

디버그 API: "startDebugging" 요청의 "consoleMode" 옵션

지난 마일스톤에서 디버그 세션 계층 구조가 단일 디버그 콘솔을 공유하는지 또는 개별 콘솔을 사용하는지를 제어하는 새 제안 API를 도입했습니다. 이 API는 이제 공식적이므로 Marketplace에 게시된 확장 프로그램에서 사용할 수 있습니다.

아이콘 색상 토큰

아이콘을 위한 새 색상 토큰을 마침내 도입하게 되어 기쁩니다. 특정 영역에 점진적으로 추가하고 있으며, 다음은 첫 번째 배치입니다.

기호

이 아이콘은 개요 보기, 탐색 경로 및 제안 위젯에 표시됩니다.

  • symbolIcon.arrayForeground
  • symbolIcon.booleanForeground
  • symbolIcon.classForeground
  • symbolIcon.colorForeground
  • symbolIcon.constructorForeground
  • symbolIcon.constantForeground
  • symbolIcon.enumeratorForeground
  • symbolIcon.enumeratorMemberForeground
  • symbolIcon.eventForeground
  • symbolIcon.fieldForeground
  • symbolIcon.fileForeground
  • symbolIcon.folderForeground
  • symbolIcon.functionForeground
  • symbolIcon.interfaceForeground
  • symbolIcon.keyForeground
  • symbolIcon.keywordForeground
  • symbolIcon.methodForeground
  • symbolIcon.moduleForeground
  • symbolIcon.namespaceForeground
  • symbolIcon.nullForeground
  • symbolIcon.numberForeground
  • symbolIcon.objectForeground
  • symbolIcon.operatorForeground
  • symbolIcon.packageForeground
  • symbolIcon.propertyForeground
  • symbolIcon.referenceForeground
  • symbolIcon.snippetForeground
  • symbolIcon.stringForeground
  • symbolIcon.structForeground
  • symbolIcon.textForeground
  • symbolIcon.typeParameterForeground
  • symbolIcon.unitForeground
  • symbolIcon.variableForeground

Symbol icon colors

문제 및 알림

문제 및 알림 아이콘의 기본 색상이 편집기 전경색을 상속하도록 설정했습니다. 따라서 해당 색상을 변경하면 다른 영역에도 상속됩니다.

Problem icon colors

문제점 패널 및 알림에 대한 아이콘 색상을 명시적으로 설정할 수도 있습니다.

  • problemsErrorIcon.foreground
  • problemsWarningIcon.foreground
  • problemsInfoIcon.foreground
  • notificationsErrorIcon.foreground
  • notificationsInfoIcon.foreground
  • notificationsWarningIcon.foreground

전구

전구 아이콘도 테마 가능합니다.

  • editorLightBulb.foreground
  • editorLightBulbAutoFix.foreground

Lightbulb icon colors

vscode.env.asExternalUri

vscode.env.asExternalUri API를 사용하면 확장 프로그램이 확장 프로그램이 실행되는 위치에서 클라이언트 머신의 동일한 리소스에 대한 URI로 **외부** URI(예: http: 또는 https: URI)를 확인 수 있습니다. 이는 vscode.env.openExternal API의 동반 기능으로, 확인된 URI를 외부 프로그램을 사용하여 여는 대신 확장 프로그램에 결과를 반환합니다.

import * as vscode from 'vscode';
import * as http from 'http';

const PORT = 3000;

export function activate(context: vscode.ExtensionContext) {
  startLocalServer(PORT);

  context.subscriptions.push(
    vscode.commands.registerCommand('example.command', async () => {
      const resolved = vscode.env.asExternalUri(
        vscode.Uri.parse(`https://:${PORT}`)
      );
      vscode.window.showInformationMessage(
        `Resolved to: ${resolved} on client and copied to clipboard`
      );
      vscode.env.clipboard.writeText(resolved.toString());
    })
  );
}

function startLocalServer(port: number) {
  const server = http.createServer((req, res) => {
    res.end('Hello world!');
  });
  server.on('clientError', (err, socket) => {
    socket.end('HTTP/1.1 400 Bad Request\r\n\r\n');
  });
  server.listen(port);
  vscode.window.showInformationMessage(`Started local server on port: ${port}`);
}

http:https: URI의 경우, 확장 프로그램이 클라이언트 머신에서 실행 중이면 asExternalUri는 아무 작업도 수행하지 않습니다. 그러나 확장 프로그램이 원격으로 실행 중인 경우, vscode.env.asExternalUri는 자동으로 로컬 머신에서 원격의 target으로 포트 포워딩 터널을 설정하고 터널에 대한 로컬 URI를 반환합니다.

asExternalUrivscode.env.uriScheme URI로 호출되면, 브라우저에서 열릴 때(예: openExternal을 통해) 등록된 URI 핸들러가 트리거되는 URI를 반환합니다.

실험적 사용자 지정 데이터 설정 및 기여 지점 제거

[html/css].experimental.customData 설정 및 contributes.[html/css].experimental.customData 기여 지점은 1.38에서 사용 중단되었고 이제 제거되었습니다. 대신 안정적인 사용자 지정 데이터 설정 및 기여 지점을 사용할 수 있습니다. 사용자 지정 데이터 형식에 대한 자세한 내용은 microsoft/vscode-custom-data 리포지토리를 참조하십시오.

extensionKind는 배열일 수 있음

package.json에서 extensionKind 속성은 확장 프로그램이 원격의 경우 어디에서 실행되어야 하는지를 나타내기 위해 "ui" 또는 "workspace" 값을 가질 수 있었습니다. 이번 릴리스에서는 extensionKind가 배열이 될 수 있습니다. 예를 들어 ["ui", "workspace"]는 확장 프로그램이 "ui""workspace" 양쪽에서 실행될 수 있으며, 설치된 경우 "ui" 측에서 실행되는 것을 선호함을 나타냅니다.

제안된 확장 API

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

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

제안 API를 사용하는 확장은 게시할 수 없습니다. 다음 릴리스에서 호환성이 깨지는 변경이 있을 수 있으며 기존 확장을 손상시키고 싶지 않습니다.

IntelliSense 대체 모드 지원

사용자가 제안이 기존 텍스트를 대체할지 또는 삽입만 할지 결정할 수 있는 기능을 작업 중입니다. 예를 들어, con|st 내에서 console을 수락하면 console(대체) 또는 consolest(삽입)이 될 수 있습니다. 두 모드 모두 장점이 있으며, 최종적으로 현재 컨텍스트와 사용자 기본 설정에 따라 달라집니다. 이 기능을 가장 잘 작동하게 하려면 확장 프로그램에서 어떻게 해야 할지 알려줘야 합니다. 따라서 CompletionItem#range 속성에 새 유형을 추가하려고 제안합니다.

interface CompletionItem {
  range?: Range | { insert: Range; replace: Range };
}

범위는 여전히 선택 사항이거나 간단한 범위일 수 있지만, 삽입 및 대체 범위를 위한 두 개의 범위가 될 수도 있습니다. 자세한 내용은 이슈 #10266을 참조하십시오.

작업 세부 정보

Task에 작업 공급자가 UI에 표시될 때 작업에 detail을 추가하는 데 사용할 수 있는 새 속성이 있습니다. tasks.json에서도 세부 속성을 사용할 수 있습니다. 내장 npm 확장 프로그램은 작업 세부 정보를 사용하여 어떤 npm 스크립트가 실행될지 표시합니다.

tasks with detail

사용자 지정 편집기에 WebviewPanelOptions 전달 지원

이번 반복에서 사용자 지정 편집기 API 제안 작업을 계속 진행했습니다. 이제 제안된 registerWebviewEditorProvider 함수는 options 집합을 받아 사용자 지정 편집기 웹뷰에서 retainContextWhenHidden 및 기타 기능을 활성화할 수 있습니다.

export function registerWebviewEditorProvider(
  viewType: string,
  provider: WebviewEditorProvider,
  options?: WebviewPanelOptions
): Disposable;

엔지니어링

브라우저에서 실행되는 VS Code 테스트

이제 개발 및 테스트를 위해 브라우저에서 VS Code를 실행할 수 있는 최소한의 설정이 있습니다. 브라우저 인스턴스에는 여전히 일부 기능이 누락되어 있으며 활발히 개발 중입니다.

로컬 복사본인 vscode 리포지토리에서 명령줄에서 yarn web을 실행하고 https://:8080/에 액세스하십시오. vscode 리포지토리 복제 및 빌드에 대한 자세한 내용은 설정 지침을 참조하십시오.

VS Code running in a browser

참고: 이 설정은 심각한 개발에 사용하지 마십시오. 의도는 커뮤니티가 VS Code에 변경 사항을 기여하여 브라우저 환경 전반을 개선할 수 있도록 하는 것입니다.

TypeScript 3.7로 VS Code 빌드

VS Code는 이제 TypeScript 3.7을 사용하여 빌드됩니다. 이는 코드베이스에서 선택적 체이닝(?.)을 사용할 수 있게 해주므로(다른 많은 개선 사항도 가져옴) 흥미로운 업데이트입니다.

오늘 JavaScript 및 TypeScript Nightly 확장 프로그램을 설치하여 VS Code에서 TypeScript 3.7 기능을 사용할 수 있습니다.

Electron 6.0 업데이트

이번 마일스톤에서 Electron 6을 VS Code에 번들링하는 탐색을 완료했으며, 이 Electron 버전이 안정 버전으로 배송된 것은 처음입니다. 이는 주요 Electron 릴리스이며 Chromium 76.0.3809.146 및 Node.js 12.4.0을 포함합니다(현재 Chromium 69 및 Node.js 10.11.0 버전에서 큰 도약입니다).

Electron 7로 업데이트하는 탐색을 시작했으며, 곧 Insiders에 푸시할 수 있기를 바랍니다.

주요 수정 사항

  • 78634: 터미널 내용이 크기 조정 시 사라짐 (powershell/conpty)
  • 25854: Markdown 미리 보기를 새 편집기 그룹으로 끌 수 없음
  • 81824: 웹뷰 편집기가 이전 편집기 기록 열기 명령에 표시되지 않음

감사합니다

마지막으로, VS Code를 더욱 발전시키는 데 도움을 준 다음 분들께 진심으로 감사드립니다.

이슈 추적에 대한 기여

수신되는 이슈를 관리하는 데 도움이 되고 싶으시면 커뮤니티 이슈 추적 페이지를 참조하세요.

vscode 기여

language-server-protocol 기여

vscode-eslint 기여

vscode-json-languageservice 기여

vscode-css-languageservice에 대한 기여

node-jsonc-parser에 대한 기여

debug-adapter-protocol에 기여

vscode-vsce 기여

inno-updater에 대한 기여

localization 기여

Microsoft Localization Community Platform (MLCP)를 사용하는 800명 이상의 클라우드 + AI 현지화 커뮤니티 회원이 있으며, Visual Studio Code에 약 100명의 활성 기여자가 있습니다. 새로운 번역 제공, 번역 투표 또는 프로세스 개선 제안 등 기여해주신 모든 분들께 감사드립니다.

다음은 기여자의 스냅샷입니다. 프로젝트에 대한 자세한 내용과 기여자 이름 목록을 보려면 프로젝트 사이트(https://aka.ms/vscodeloc)를 방문하십시오.

  • 보스니아어 (라틴, 보스니아 헤르체고비나): Adnan Rizvan.
  • 체코어: Michal Franc, Jan Hruby.
  • 덴마크어: Lasse Stilvang, Frederik bruun.
  • 네덜란드어: Laurens Kwanten, Lemuel Gomez, Niels ter Haar.
  • 영국 영어: Graham Smith, Martin Littlecott, Alexander McLean.
  • 프랑스어: Antoine Griffard, Rodolphe NOEL, Bruno Lewin, Maxime Bouveron, DJ Dakta.
  • 독일어: Simon Haag, Adrian Bähr, Julian Tomsik.
  • 히브리어: Ariel Bachar.
  • 힌디어: Kishan K, Rohit Raj.
  • 중국어 간체: Yizhi Gu, paul cheung, 斌 项, 顺 谭, 一斤瓜子, Charles Lee, Peng Zeng, Charles Dong, 楠 姜, yungkei fan, ztluo, David Huang, 普鲁文, Zhen-Qi Liu, zhichen zhao, Phil Wang.
  • 중국어 번체: Jimmy Hu, 船長, E L, Winnie Lin.
  • 인도네시아어: Jakka Prihatna, Eriawan Kusumawardhono, Nicko Satria Utama, Christian Elbrianno, Septian Adi.
  • 이탈리아어: Alessandro Alpi, Luigi Bruno.
  • 일본어: Yuta Ojima, Michihito Kumamoto, Aya Tokura, TENMYO Masakazu, Takayuki Fuwa, Koichi Makino.
  • 한국어: 홍주, 정성진.
  • 폴란드어: Andrzej Poblocki, Kacper Łakomski.
  • 포르투갈어 (브라질): Marcelo Fernandes, Marcondes Alexandre, Roberto Fonseca, Alessandro Fragnani, Arthur Renato, Jota Freitas Jr, Caio Felippe Curitiba Marcellos.
  • 포르투갈어 (포르투갈): Pedro Filipe.
  • 루마니아어: Andrei Tudor, Bogdan Mateescu, Stefan Gabos.
  • 러시아어: Kazakov Lex, Vadim Svitkin, TJS.
  • 스페인어: Aleks M, José María Aguilar, Jerónimo Milea, Ricardo Estrada Rdez, Abdón Rodríguez P..
  • 스웨덴어: Sven Axelsson, Patric Högman.
  • 타밀어: Pradeep Krishnan.
  • 터키어: Ahmetcan Aksu, Cansu Gürler, Mehmet Yönügül, Umut Can Alparslan.
  • 우크라이나어: Arthur Murauskas, Oleh Hatsenko, Oleksandr Krasnokutskyi, Did Kokos.
  • 베트남어: huy dk, Việt Anh Nguyễn, Ha Xuan Anh Nguyen, Quoc Han Dinh.
© . This site is unofficial and not affiliated with Microsoft.