VSCodeの新機能紹介（2022年7月）

Visual Studio Codeの新機能で気になったものをいくつか紹介します。

# [Visual Studio Code July 2022 (version 1.70)](https://code.visualstudio.com/updates/v1_70)

## [Sticky scroll (Preview)](https://code.visualstudio.com/updates/v1_70#_editor-sticky-scroll)
スクロールするときに、ブロックの先頭行がスクロールされずに残ってくれるので、どこにいるのかわかりやすくなります。
これはいいですね！
![sticky-scroll.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244425/965e0740-be5d-5cba-177f-044cacfbdd2b.gif)

まだPreview機能です。
```editor.experimental.stickyScroll.enabled```の設定をONにすると使えるようになります。

## [コミットメッセージのスペルチェック](https://code.visualstudio.com/updates/v1_70#_commit-input-field-spell-checking)
Source Controlのコミットメッセージ入力フォームでもスペルチェックをしてくれるようになりました。
GitHubに英語でコミットするときに助かりますね。

## [Terminal Shell Integration](https://code.visualstudio.com/updates/v1_70#_terminal)
Shell IntegrationがデフォルトでONになりました。
ターミナルのコマンド実行結果アイコンがプロンプトの先頭に表示されたり、他にも色々な機能が使えるようになります。
![terminal-si-intro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244425/3f753c1b-6ce5-0338-7e7e-0392243f14f2.png)

## [VS Codeのシェルコマンド履歴機能をシェルの```Ctrl + r```と入れ替え](https://code.visualstudio.com/updates/v1_70#_run-recent-command-as-a-replacement-for-reverse-search)
VS Codeのシェルコマンド履歴呼び出しコマンド```Terminal: Run Recent Command...```を、ターミナルから直接```Ctrl +r```で使えるようになりました。
キーバインディングの設定に新たなコンテキストが追加されたことによって実現可能になったようです。

keybindings.jsonに以下のように追記しましょう。
```json
{ "key": "ctrl+r",     "command": "workbench.action.terminal.runRecentCommand", "when": "terminalFocus" },
{ "key": "ctrl+alt+r", "command": "workbench.action.terminal.sendSequence", "args": { "text": "\u0012"/*^R*/ }, "when": "terminalFocus" },
{ "key": "ctrl+r",     "command": "workbench.action.quickOpenNavigateNextInViewPicker", "when": "inQuickOpen && inTerminalRunCommandPicker" },
{ "key": "ctrl+c",     "command": "workbench.action.closeQuickOpen", "when": "inQuickOpen && inTerminalRunCommandPicker" },
```

- ```Ctrl + c```でキャンセルできます。
- ```Ctrl + Alt + r```でシェルに元々ある```Ctrl + r```を実行できます。


また、```terminal.integrated.sendKeybindingsToShell```の設定がONになっていると動作しないようなのでOFFにします。

![スクリーンショット 2022-08-07 161040.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244425/1ba1c608-5d54-e92c-1d90-0a34bdd9eeee.png)

VS Codeのシェルコマンド履歴はあいまい検索と完全一致検索を切り替えたり、複数行入力されたコマンドをひとつにまとめて検索してくれたり、など高機能です。
また、シェルの種類に依存せず使えますし、複数の実行シェルにまたがって検索できるのもいいですね。


## [ファイルの検索結果の複数選択](https://code.visualstudio.com/updates/v1_70#_search-multiple-selection)
ファイルの検索結果を複数選択することができるようになりました。
検索結果の一部だけをまとめて置換するのが楽になりますね。
![search-multiselect.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244425/d4a525df-7216-86a4-eab3-9cb2b02fa0aa.gif)

## [ツリービューの検索コントロール](![search-multiselect.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244425/d4a525df-7216-86a4-eab3-9cb2b02fa0aa.gif))
EXPLORERやOUTLINEなどのビューで```Ctrl+F```を押すと検索コントロールが出て、検索結果でフィルター表示できるようになりました。

今までもウィンドウ内で直接文字列入力することで同じことはできましたが、よりわかりやすいUIになりました。

![tree-filter.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244425/64863977-e6fe-639c-5631-52c46ded6c2a.gif)

## [任意の範囲の折りたたみ](https://code.visualstudio.com/updates/v1_70#_fold-selection)
テキストを選択後、コマンドパレットから```Create Manual Folding Range from Selection```を実行すると任意の範囲を折りたたむことができるようになりました。
折りたたみを削除するには、対象行にカーソルを合わせたり範囲を選択したりしてから、```Remove Manual Folding Ranges```を実行します。

折りたたむのが好きな人には嬉しい機能かもしれませんね。
（Visual Studioの#regionディレクティブのように任意の名前を付けられたら嬉しいんですが、、、）

また、```editor.showFoldingControls```を```never```にすることで折りたたみを無効する選択肢も増えました。

![manual-folding-range.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244425/888f16c7-27cc-dd87-3743-c8dce0198394.gif)

## [mergeコマンドラインオプション](https://code.visualstudio.com/updates/v1_70#_command-line-option-merge)
VS Codeのコマンドラインオプションにmergeオプションが追加されました。
```.gitconfig```に以下のように追記すると、```git mergetool```コマンドでVS Codeの3-wayマージが使えるようになります。
VSCode Insiders版を使う場合は```code```の部分を```code-insiders```と書きます。

```config:.gitconfig
[merge]
  tool = code
[mergetool "code"]
  cmd = code --wait --merge $REMOTE $LOCAL $BASE $MERGED
```


## [Settings Profiles (Insiders)](https://code.visualstudio.com/updates/v1_70#_settings-profiles)
コマンドから```Settings Profile: Create```を実行すればVS Codeの設定プロファイルを作成でき、ステータスバーから切り替えることができるようになります。

今のところVSCode Insiders版限定の機能です。
![settings-profiles.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/244425/1fc8af5a-a2b4-e21a-16f3-c84c5c3be82d.gif)