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

【VSCode】Visual Studio Code 0.3.0の新機能まとめ

前書き

いつの間にかVSCodeが0.3.0にバージョンアップしていました。

「0.2.0は?」とか「起動時に毎回やってる自動アップデートチェックとは一体何だったのか」とか色々思うことはあるんですが、気が付かなかったことにしましょう。0.2.0は色々あったみたいですが、見なかったことにしましょう。

アップデート方法

再インストールしてください。

C:\Users\{UserName}\AppData\Local\Code\app-0.3.0にまるっと新しいものがインストールされます。日本語フォントを適用するためにcssを直接いじってたりすると強制的に元に戻されてしまいますが、app-0.1.0に元のソースやバイナリがそのまま残っているので、適当にマージしましょう。

新機能

Updatesに色々書かれているので、適当に翻訳していきます。

新しいキーバインド

色々な要望を受けてデフォルトのキーバインドを改善したようです。

  • Ctrl+Oでネイティブなファイル選択ダイアログが出るようになりました。各所から強い要望があったそうです。
    • VSCodeのファイル選択ダイアログ(コマンドパレットっぽいあれ)はCtrl+P⌘Pに変更したようです。「今の主要なエディタだとCtrl+Pで開くほうがトレンドだから!」と言い訳がましいことが書いてあります。
  • Visual Studioと同じくF12で定義にジャンプできるようになりました。(Ctrl+F12から変更)
  • Macでファイルの先頭/末尾への移動がCmd+UpCmd+Downで行えるようになりました。
  • コードのフォーマットを⇧⌥Fで行えるようになりました。(WindowsだとShift+Alt+FLinuxだとCtrl+Shift+Iで元々できました)

起動時の引数

存在しないファイルが引数で渡されたら新規ファイルを作成するようになりました。

(正確には「VSCodeで保存すると初めて作成されるDirtyなファイル」とのこと。)

code mynewfile.js

また、複数のファイルやディレクトリを引数で渡すことである程度最初からWorking Spaceを作れるようになりました。

code c:\myfolder1 c:\myfolder2 c:\myapp\program.cs

最後に、前回のセッション内容を復元しないで起動できるように-n--new-window)と言うオプションが追加されました。

code -n

コード編集

複数選択

  • Ctrl+D⌘D)を押すことでカーソル上の単語を選択、選択中に同コマンドを押すことで次に現れる同単語も選択できるようになりました。
  • Ctrl+K → Ctrl+D⌘K → ⌘D)で同単語を選択しつつカーソルを移動させることもできます。
  • 検索ボックス(Ctrl+F)が開いた状態で上記コマンドを入力すると即座に検索単語になります。
  • Ctrl+U⌘U)でカーソルの位置をアンドゥできるようになりました。
  • Ctrl+Alt+UpMac:⌥⌘↑, Linux:Ctrl+Meta+Up)とCtrl+Alt+DownMac:⌥⌘↓, Linux:Ctrl+Meta+Down)を使うことで複数選択しながらページを移動できます。

コメント

  • Ctrl+K → Ctrl+C⌘K → ⌘C)で選択行をコメントアウトできるようになりました。
  • Ctrl+K → Ctrl+U⌘K → ⌘U)で選択行のコメントを外せるようになりました。
  • 元々Ctrl+/⌘/)で行コメントの切り替えができたんですが、選択文字列内の空白行(ホワイトスペースのみ含む)では何も追加/削除しないようになりました。
  • 同じく、ブロックレベルのコメント切り替えであるShift+Alt+AMac:⇧⌥A, Linux:Ctrl+Shift+A)でも選択行の内容を見るようになりました。

インデント

空白行でTabを押したらちゃんと前行を見て必要な分だけインデントしてくれるようになりました。

選択範囲の拡張/縮小

Shift+Alt+Left^⇧←)とShift+Alt+Right^⇧→)を使って選択範囲の拡張/縮小が行えるようになりました。

どんなイメージかはgif動画があるんでそれを見てください。

禁則処理

settings.jsoneditor.wrappingIndentと言うプロパティが追加されました。指定できる値は以下の通りです。

  • none
  • same(これがデフォルト)
  • indent

長い文章が入力されるとそれぞれこんな感じになります。

    #none
    var str = "Lorem ipsum dolor sit amet, consectetur adipisicing elit
, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi
ut aliquip ex ea commodo consequat."

    #same
    var str = "Lorem ipsum dolor sit amet, consectetur adipisicing elit
    , sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris
    nisi ut aliquip ex ea commodo consequat."
    
    #indent
    var str = "Lorem ipsum dolor sit amet, consectetur adipisicing elit
        , sed do eiusmod tempor incididunt ut labore et dolore magna
        aliqua. Ut enim ad minim veniam, quis nostrud exercitation
        ullamco laboris nisi ut aliquip ex ea commodo consequat."

デバッグ機能

正直、VSCodeのデバッグ機能って使ったことないんですが…。

ドキュメントもちゃんとアップデートされているので、よくわからなかったらそっちも読んでください。

  • 接続時の設定(launch.json)としてruntimeArgsが追加されました。Node.jsやMonoにコマンドライン引数を渡す時に便利だそうです。
  • Linuxではデバッグ開始時に入出力をサポートするterminalを自動で開くようにしたそうです。
  • TypeScriptのデバッグ時にJavaScriptのsource mapと連携できるようになりました。接続時の設定でsourceMapstrueにすると使えるようです。
  • program属性にTypeScriptファイルを明示できるようになりました。
  • TypeScriptファイルからsource mapを生成してくれるようになりました。
  • 現在のセッションで開いていないフォルダ内のコードもデバッグできるようになりました。
  • 例外が発生したらその場所を赤く表示するようになりました。

この他にも多数の改善が行われています。UNCパス上のファイルをデバッグできるようになっていたりとか、MonoのF#(!)をデバッグできるようになっていたりだとか。

…って言うか、WindowsC#はいつサポートされるんですかね?

タスク

新たに三つのproblem matcherが追加されました。JSHintESLintの結果を受け取れるようになっています。

  • $jshint-stylish
  • $eslint-compact(※元文章では$eshint-compactとなっているが、Taskのドキュメントを読む限り誤記だと思われる。)
  • $eslint-stylish

また、ESLintのように複数行にまたがって取得する情報が展開されるものをどうにかするためにMulti Line Problem Matcherなるものも用意されました。

Taskの機能そのものより、ドキュメントの整備具合が大幅に向上したって感じです。がっつりtask.jsonを書くならSchema for tasks.jsonに一度は目を通しておきましょう。

言語対応状況

  • Rustの色分けとブラケットに対応。
  • TypeScript version 1.5に対応。
  • JavaScriptのvalidationのon/offを切り替えるプロパティが追加されました。主にJSHintを使う人向け。
    • javascript.validate.semanticValidation
      • 型はboolean。未使用変数が存在するとかのエラーを通知
    • javascript.validate.syntaxValidation
      • これもboolean。ブラケットが閉じてないとかのエラーを通知
  • HTMLで自動でタグを閉じてくれるようになりました。

CJK wrapping

今度は自然言語のお話。CJKとは「Chinese-Japanese-Korean」とのこと。左記の言語で禁則処理をきちんと行うようになりました。

また、変換を確定した時に変な挙動になるのも直ったみたいです。

…が、ファイル内に日本語が含まれているとOmniSharpがおかしくなるのは直ってない模様。Windowsだけなのかなー。って言うかこれはRoslynの問題な気もする。でもScriptCSは大丈夫だしなぁ…。

ファイル比較

コマンドパレットからファイル比較が簡単にできるようになりました。Files: Compare Opened File Withで可能です。

パスのコピー

Explorerペインで右クリックした時にパスをコピーできるようになりました。

現在開いているパスのコピーはコマンドパレットのFiles: Copy Path of the Active Fileで可能です。

Close Folder

メニューバーのFileか、コマンドパレットからClose Folderを選択することで現在開いているフォルダを閉じることができるようになりました。

ファイルエンコーディング

何だかんだで今回一番の目玉。UTF-8以外のエンコーディングに対応しました。

デフォルトではUTF-8のままですが、settings.jsonfiles.encodingを修正することで変更できます。

ちなみに文字コードの自動判別とかは一切ないです。ダメじゃん。

設定

VSCodeあるあるとして「setting.jsonの内容を自動補完で書いたせいで最後に,がついて怒られる」と言うのがあるんですが、これを無視してくれるようになりました。

まぁでも、怒りっぱなしなんですけど。

UNCパスのサポート

前から思ってたんだけど、VSCodeチーム、Windowsのこと嫌いだよね?

Working filesの監視

フォルダを開いていなくてもWorking files内のファイルは変更を監視するようになりました。

32bit版Linuxへの対応

対応したそうです。(雑)

まとめ

とまぁ、色々「どーなってんじゃい!」みたいなところが少しずつ修正されています。

次回は自動アップデートがちゃんと意味をなしてくれるといいですね!(皮肉)