読者です 読者をやめる 読者になる 読者になる

SourceChord

C#とXAML好きなプログラマの備忘録。最近はWPF系の話題が中心です。

Visual Studio Code 0.10.5の新機能・変更点

今月も定例のアップデートがありました。
ちょっと時間が経ってしまいましたが、今回も更新内容を一通りメモっておきます。

あと、0.10.5ではMac環境&JIS配列キーボードを使用した環境でクラッシュするって不具合がありましたが、その修正をした0.10.6というバージョンがMac向けにリリースされてます。
https://code.visualstudio.com/Updates

今回のリリースでは、前回リリース時の拡張機能のような目玉となる大きな変更点はありませんが、細かいけど痒いとこに手が届く感じな修正がいっぱい入ってます。

また、今回の更新では「Communities Contributes」という括りで、GitHubでコミュニティから届いたプルリクを受けての修正が多数入ってるのも印象的です。
VSCodeをOSS化したことによる効果がさっそく現れている感じで、今後のバージョンアップも楽しみになりますねw

insiderチャネルでのアップデート

VSCodeのinsiderチャネルでの更新を受け取る方法がドキュメントに明記されるようになりました。また、settings.jsonでお手軽にinsiderチャネルでの更新の設定ができるようになりました。

更新方法の制御については以下にまとめてます。

テキスト検索など

  • ^や$、^$などを、正規表現での検索で仕様できるようになった
  • 文字列置換の置換結果に、\n\tが使えるようになった

検索・置換のショートカット

テキスト検索関連のショートカット動作が少し変わりました。

Ctrl+Fを押すとFindのテキストボックス、Ctrl+Hを押すとReplaceのテキストボックスにフォーカスが移るようになりました。 f:id:minami_SC:20151228142620p:plain

その他各種検索のショートカット

ショートカット 内容
Alt+C 検索・置換時に、大文字と小文字を区別するかどうかを切替
Alt+R 正規表現で検索するかどうかを切替
Alt+W 検索文字の部分一致ではなく、単語単位でのマッチをするかどうか切替
Ctrl+↓ 検索のテキストボックスから、エディタ本体側へとフォーカスが移動する。

その他、エディタ関連のキーボード・ショートカット

他にも色々と便利なショートカットが追加されています。

カーソル位置を保持したスクロール

以下のショートカットで、カーソル位置はそのままにして、1行分上下にスクロール、1ページ分上下にスクロールできます。

  • Ctrl+↑
  • Ctrl+↓
  • Ctrl+PageUp
  • Ctrl+PageDown

VisualStudioと似た感じの動作ですね。
(PageUp/PageDownの動きは若干異なりますが。)

1行選択

Ctrl+Iで現在のカーソルがある位置の、行全体を選択するようになりました。

その他

  • settings.jsonのデフォルト値変更
    • editor.insertSpacesのデフォルト値をtrueに変更
    • editor.tabSizeのデフォルト値を4に変更
  • editor.cursorBlinkingという設定を追加
    • カーソルの点滅動作を制御
    • blink, visible, hiddenから選択
    • hiddenにすると、カーソルを非表示にできるけど、使い道がイマイチよくわかりません。。。w
  • ショートカットキーの定義に利用できるキーが増えた
    • F13~F19までのファンクションキーを用いたショートカット定義ができるようになった
    • テンキーの0~9の数字や、テンキー側の+, -などの各種記号を用いたショートカット定義ができるようになった

非USのキーボードレイアウト環境向けの改善

斜め読みしかしてないですが、ざっと以下のような感じ。

  • VSCodeでは、UI上にショートカットキーの表示をする際には、今までUS配列上の文字列で表示していた
  • 今回の修正で、キーボードショートカットのUI表示時には、実行環境のキーボードレイアウトに合わせたキー表示をするようにしたとのこと

ドキュメントにはフランス語環境での例とかが書いてありました。
この辺の事情はあまりよくわからないので省略。
フランス語のキーボードレイアウトって少々特殊なんですかね。

ショートカット定義を入力するウィジェット

前述のフランス語環境などの、特殊な環境用にショートカット定義を補助するウィジェットを追加したようです。

keybindings.jsonを編集してるときに、Ctrl+K Ctrl+Kと入力すると、以下のような画面が出てきます。
f:id:minami_SC:20151228142647p:plain

ここで、定義したいショートカットキーを実際に入力すると、以下のようにショートカット定義のスニペットが入力されるようです。
各言語でのキーボードの表示と、VSCode内部でのショートカット定義をするkeybindings.jsonでの定義の食い違いを吸収するために、こういうUIを追加したみたい。

QuickOpenの改善(←Ctrl+Pでファイル開くヤツ)

VSCodeでは、Ctrl+Pのショートカットで、以下のようなUIが出て、ファイル名を指定して特定のファイルを開くことができます。
f:id:minami_SC:20151228142705p:plain

この、開くファイルを検索する際の動作で、以下のようにいい感じに検索するための仕様が付け加えられました。

  • /\などを含む、フォルダ指定での検索ができるようになった
  • fuzzy search
    • こんな風に、ファイル名中の単語区切りの頭文字だけ省略して入力しても、検索結果に含まれます。
    • 例えばrmと打つと、README.mdというファイルが引っかかる、という感じ。 f:id:minami_SC:20151228142715p:plain

言語サポート

  • JavaScript
    • ES6がデフォルトになった
    • 今までは、VSCodeでES6のサポートを有効にするには、jsconfig.jsonを用意してcompilerOptions.targetプロパティを設定をする必要がありました。
    • v0.10.5からはデフォルトでES6が有効になっています。
    • PromiseSet, Map, String.startsWithなどのES6の各種機能が、デフォルト状態でもコード補完で出てくるようになってます。
  • TypeScript
    • TypeScriptのLanguage Serviceが1.7.5になった
  • JSX

拡張機能関連の修正・変更点

Extension Galleryへの接続で、プロキシ設定が反映されるようになった。

VSCodeは、以下の設定をUser or workspace単位の設定としてjsonファイルに書いておくことで、VSCodeが行う各種通信で、プロキシサーバー経由での通信を行うように設定することができます。

{
    "http.proxy": "http://・・・・"
}

しかし、今までのバージョンでは、Extension Galleryへの通信にこのプロキシ設定が反映されておらず、プロキシ設定が必要な環境では、ギャラリーからの拡張機能のインストールができない状態でした。

0.10.5からは、このギャラリーからの拡張機能インストールにプロキシ設定が反映されるようになったようです。

ただし、0.10.5で自分も試してみたところ、まだうまく接続できません。
以下のissuesを見ても、同様の問題が起きてる人が多数いるようです。 https://github.com/Microsoft/vscode/issues/69 ギャラリーへの接続はまだ問題ありそうなので、今後の修正を期待しておきましょう。

Outdatedな拡張機能の列挙機能

コマンドパレットから、Extensions: Show Outdated Extensionsというコマンドを打つと、新しいバージョンが配信されている拡張機能を列挙してくれます。
f:id:minami_SC:20151228142725p:plain

今後、色々な拡張機能がバージョンアップしていったら、色々と使う場面も増えるのかな。

その他拡張機能

  • deactevatedイベントの追加
    • VSCode終了時に、deactivatedイベントが拡張機能側に通知されるようになりました。
    • アプリ終了時に、拡張機能側で何かしたい場合に使えるかな
  • 拡張機能で発生した問題がステータスバーに表示されるようになった

Git関連

Scoped Git Services

VSodeで開いてるフォルダが、gitのルートディレクトリではなく、サブフォルダを開いてる時でも、git連携機能が動作するようになりました。

sample
├─.git
├─project1
│     package.json
│        :
└─project2
       package.json
          :

こんなフォルダ構成で、sampleフォルダのルートに.gitフォルダがある状態でproject1 フォルダをVSCodeで開いても、ちゃんとgitの構成が認識されます。

Gitステータスバー

git関連の表示や同期処理を行うためのボタンが付いたステータスバー表示が追加になってます。

その他

  • 拡大率の設定
    • 環境設定で拡大率を設定しておけるようになりました。キーボードショートカットのCtrl++、とかで設定した拡大率はアプリ終了後は保持されませんが、ここのjsonファイルで設定した値は、ずっと保持されます。
    • window.openFIleInNewWindow
      • 今まで、window.openInNewWindowというプロパティ名だったもの。目的を適切に表すように、プロパティ名が変更になりました。
  • EmmetがJSXやTSXの中でもサポートされるようになった
  • Debug Console
    • デバッグコンソールで文字列を表示する際に、ウィンドウ右端で改行してラップ表示するようになった
  • ブレークポイントの表示改善 *以下のようにブレークポイントの表示が変わるようになった
    (たぶん、グレー枠だけの表示が今回追加になった部分)
  • JSON Schemaの関連付けを行う拡張機能の作成ができるようになった
  • ↓二つはあんま詳細な内容を見れてないので省略
    • Language Server Extensions
    • Debug Adapter Development