VSC:Visual Studio Code の使い方

基本資料にあたろう

 前回はVisual Studio Code(以下VSC)を使おうとして、Yomanのインストールとか、その前段階で見事に頓挫していたけど、流石に1月たってそれなりに分かってきた。
 しかし、未だにメインのエディタとして使ってないので、さほど慣れてきてるわけではない。
 …いかんな、この記事もVSCで書こう。

 よーし、エディタをVSCに乗り換えたぜ。
 なお、私の環境はOS X10.10.3で、いわゆるYosemiteなので、Win他の方は適当に読み替えつつ続きをどーぞ。

 まず、Visual Studio Communityってページからリンクされてる日本語の資料Visual Studio Code ファースト ステップ ガイド(PDF)を読むと、VSCの概要が理解できる。
 私はこの資料の存在にひと月ぐらい気づかなかった。Bingで"Visual Studio Code"を検索しても全然上位に出てこないとかMSはSEOに失敗してるよ、完全に!!
 ま、とにかく。このPDFは非常に良くできているので、その名の通りファーストステップガイドにふさわしい読み物。

 で、より詳しい情報はDocumentation for Visual Studio Code(英語)を参照のこと。
 私はこっちを先に読んでしまい、なんか色々…というかYomanのインストールで足踏みしてしまった。
 VSCを使うのにとりあえずYomanやら.NETやらは必要ないので、VSC自体が目的の場合は華麗にスルーすべし。

キーバインディングを変えよう

 えーまずVSCはデフォルトのキーバインドがemacsライクなんですよね。
 私は初ワープロがWordStarな人間なので、所謂ダイヤモンドカーソル(ctr+e,s,d,xが↑←→↓に対応している)にしたいんですよ。
 emacsのfがforwordだとして、移動するのが下か右か(もしかして上や左?)分かんないじゃないですか意味的に!
 とにかく、エディタを使う際にこのキーバインドに変更できるかどうかというのが、超大事。

 キーバインディングはメニューから[Code]-[Prefarences]-[Keyboard Shortcuts]で変更できる。
 左にデフォルトの設定、右にユーザ設定のペインが作られるので、ユーザ設定の方に書き換えたい設定をガンガン書いていけばいい。
 設定はJSONなので、JavaScriptに慣れている人にとっては、書式自体は特に迷うこともないでしょう。
 詳細はCustomize Visual Studio Codeにある。
 ちゅーても、読んでも正直よくわからない機能が沢山あって困る。
 基本的なカーソルキーの動き程度は流石にわかるので、ダイヤモンドカーソルにに設定するために右ペインに以下のように記述。

[
//---- cursor ----
// ↑up
{ "key": "ctrl+e",                "command": "cursorUp",
                                     "when": "editorTextFocus" },
{ "key": "shift+ctrl+e",          "command": "cursorUpSelect",
                                     "when": "editorTextFocus" },
{ "key": "ctrl+e",                "command": "showPrevParameterHint",
                                     "when": "editorTextFocus && parameterHintsVisible" },
{ "key": "ctrl+e",                "command": "selectPrevQuickFix",
                                     "when": "editorFocus && quickFixWidgetVisible" },
{ "key": "ctrl+e",                "command": "selectPrevSuggestion",
                                     "when": "editorTextFocus && suggestWidgetVisible" },
// ←left
{ "key": "ctrl+s",                "command": "cursorLeft",
                                     "when": "editorTextFocus" },
{ "key": "shift+ctrl+s",          "command": "cursorLeftSelect",
                                     "when": "editorTextFocus" },
// →right
{ "key": "ctrl+d",                "command": "cursorRight",
                                     "when": "editorTextFocus" },
{ "key": "shift+ctrl+d",          "command": "cursorRightSelect",
                                     "when": "editorTextFocus" },
// ↓down
{ "key": "ctrl+x",                "command": "cursorDown",
                                     "when": "editorTextFocus" },
{ "key": "shift+ctrl+x",          "command": "cursorDownSelect",
                                     "when": "editorTextFocus" },
{ "key": "ctrl+x",                "command": "showNextParameterHint",
                                     "when": "editorTextFocus && parameterHintsVisible" },
{ "key": "ctrl+x",                "command": "selectNextQuickFix",
                                     "when": "editorFocus && quickFixWidgetVisible" },
{ "key": "ctrl+x",                "command": "selectNextSuggestion",
                                     "when": "editorTextFocus && suggestWidgetVisible" },
]

 上下左右を設定しただけなのに、結構長い。
 shift+による選択を追加しているのもあるが、whenにより状況によって機能させるかどうかという設定もできるので、適用したい全状況を描く必要があるのだ…面倒臭い。
 しかも、設定できないところも多くて、全場面でカーソルキーの代わりにダイヤモンドカーソルを使うことはできない…うーん、かなりやる気減衰。
 慣れると反射的に使ってしまうので、その時動かないとかなり「イラッ」とくるのはご存知ないのですかMSさん!
 あ、ちなみにJSONフォーマットだけどVSCの設定ファイルは最後の行に,が付いてても問題なく読んでくれる(エラーとしてはカウントされるので、ウインドウ左下のエラー数は1になるが、気にするな!!)
 設定は基本的に即時反映されるが、メニューのショートカット表記はアプリケーションの再起動を行うまで変更されないようだ。

 とにかく頑張って、その他のキーも好きにバインディングしていく。
 50個ぐらいキーバインディングを変更して、流石に手に馴染んできた。
 手に馴染むまで50個も変更しないといけないのかよ、どんだけワガママなんだよ、とか思う向きもあるでしょうか、プログラマとか大抵ワガママですよね! ね!!

 その際、調べたキーバインディングについてのメモというかリファレンス的なにものを置いておく。
 キーに設定できる機能一覧はすなわちエディタの機能一覧…だと思うので、機能一覧としても見れるはず。
 正確なところは前述のMSのリファレンスを参照のこと。
 あと、よくわからなかった部分も結構あるので、その辺解説なし。説明(Command)のところほとんどCommand idの最後の部分そのまんまで説明になってないじゃん!!

keybindings.jsonの中身は、次のようなフォーマットになっている。優先度は後ろの行に書いたものほど高い。

[
    {"key":"キーコンビネーション","command":"実行内容","when":"実行タイミング"},
    ...
]

"key"
 キーコンビネーションは、特殊キーを+でつなぎ、最後にキートップの記号を書く。
 スペースで区切ると連続入力でのキーコンピネーションとなり、emacsっぽい操作も設定できる。
 特殊キーは、シフト(shift)、コントロール(ctrl)、オプション(alt)、コマンド(Mac:cmd)、ウインドウズ(WIN:win)、メタ(Linux:meta)
 それに組み合わせて、英数記号(a-z, 0-9,`, -, =, [, ], ;, ', ,, ., /)、ファンクションキー(f1-f15)
 カーソル(left, up, right, down, pageup, pagedown, end, home)
 タブ(tab)、エンター(enter)、エスケープ(escape)、スペース(space)、バックスペース(backspace)、デリート(delete)
 ポーズ(pausebreak)、キャップスロック(capslock)、挿入(insert)
 以上が使えるが、ここに含まれないバックスラッシュ(\)とかデフォルトのキーバインディングに設定してあって、しかも動かない…え、なにしたいの?


"command"を指定しない場合、そのキーコンビネーションと実行タイミングでは何も動作しなくなるので、デフォルト動作を停止したい場合に使う。
以下、"command"の実効内容に書くもの一覧
//カーソルキー移動
cursorUp                ↑
cursorUpSelect          ↑+選択

cursorDown              ↓
cursorDownSelect        ↓+選択

cursorLeft              ←
cursorLeftSelect        ←+選択

cursorRight             →
cursorRightSelect       →+選択

cursorWordLeft          左単語
cursorWordLeftSelect    左単語+選択

cursorWordRight         右単語
cursorWordRightSelect   右単語+選択


cursorHome              行頭
cursorHomeSelect        行頭+選択

cursorEnd               行末
cursorEndSelect         行末+選択

cursorPageDown          ページダウン
cursorPageDownSelect    ページダウン+選択

cursorPageUp            ページアップ
cursorPageUpSelect      ページアップ+選択

cursorTop               ファイル頭
cursorTopSelect         ファイル頭+選択

cursorBottom            ファイル末
cursorBottomSelect      ファイル末+選択

editor.action.insertCursorAbove     カーソルを上に増やす
editor.action.insertCursorBelow     カーソルを下に増やす
removeSecondaryCursors              複数カーソルモードを終了

editor.action.smartSelect.grow      スマートセレクト拡大
editor.action.smartSelect.shrink    スマートセレクト縮小

undo                    アンドゥ
redo                    リドゥ
cursorUndo              カーソル位置のアンドゥ

deleteLeft              左文字削除
deleteRight             右文字削除

deleteAllLeft           行左全削除
deleteAllRight          行右全削除

editor.action.deleteLines   行全削除

editor.action.selectAll 全選択

lineBreakInsert         ラインブレーク入力

tab                         タブ
outdent                     逆タブ
editor.action.indentLines   インデント
editor.action.outdentLines  アウトデント

editor.action.addCommentLine    コメント行に変更
editor.action.removeCommentLine コメント行を削除
editor.action.commentLine       コメント行に変更・削除のトグル
editor.action.blockComment      ブロックコメント

actions.find                                検索
editor.action.startFindReplaceAction        置換
editor.action.previousMatchFindAction       前の検索結果
editor.action.nextMatchFindAction           次の検索結果
editor.action.addSelectionToNextFindMatch   選択範囲を検索文字列に設定
editor.action.moveSelectionToNextFindMatch  選択範囲を検索文字列にして検索
closeFindWidget                             検索パネルを閉じる

editor.action.goToDeclaration       定義に移動
editor.action.previewDeclaration    定義を簡易表示

editor.action.rename                リネーム
acceptRenameInput                   リネームを確定
cancelRenameInput                   リネームをキャンセル


editor.action.clipboardCopyAction   コピー
editor.action.clipboardCutAction    カット
editor.action.clipboardPasteAction  ペースト

editor.action.format                    フォーマット
editor.action.trimTrailingWhitespace    末尾の空白を削除

// escに割り当てられている系
cancelSelection                     文字選択解除
closePeekDeclarationEditor          定義簡易表示終了
closeReferenceSearchEditor          リファレンス表示終了


omnisharp.show.generalLog           omnisharpログ表示
omnisharp.show.generalLogOnSide     omnisharpログを横に表示
languages.action.omnisharp.restart

editor.action.triggerSuggest        コード補完 トグル
acceptSelectedSuggestion            コード補完を確定
^acceptSelectedSuggestion           コード補完を確定(文字を残す)
selectPrevSuggestion                前の予想を選ぶ
selectNextSuggestion                次の予想を選ぶ
selectPrevPageSuggestion            前ページの予想を選ぶ
selectNextPageSuggestion            次ページの予想を選ぶ
hideSuggestWidget                   コード補完パネルを閉じる


editor.action.copyLinesUpAction     行を複製して上に追加
editor.action.copyLinesDownAction   行を複製して下に追加
editor.action.insertLineBefore      上に空行を追加
editor.action.insertLineAfter       下に空行を追加
editor.action.jumpToBracket         括弧に移動

editor.action.marker.prev           前のマーク(エラー箇所)に移動
editor.action.marker.next           次のマーク(エラー箇所)に移動

editor.action.moveLinesUpAction     行を上に移動
editor.action.moveLinesDownAction   行を下に移動


editor.action.showContextMenu       コンテクストメニュー表示


acceptSnippet                       スニペットを決定
jumpToPrevSnippetPlaceholder        前のスニペットに置き換え
jumpToNextSnippetPlaceholder        次のスニペットに置き換え
leaveSnippet                        スニペット終了


editor.action.triggerParameterHints 引数ヒント開始・終了 トグル
showPrevParameterHint               前の引数ヒント
showNextParameterHint               次の引数ヒント
closeParameterHints                 引数ヒントを終了

workbench.action.closeActiveEditor  エディタを閉じる
workbench.action.closeFolder        フォルダを閉じる
workbench.action.closeMessages      メッセージを閉じる
workbench.action.closeWindow        ウインドウを閉じる

// デバッグ
workbench.action.debug.configure                デバッグ設定
workbench.action.debug.play                     デバッグ実行
workbench.action.debug.start                    デバッグ開始
workbench.action.debug.stepOut                  ステップアウト
workbench.action.debug.stepOver                 ステップオーバー
workbench.action.debug.stepInto                 ステップイントゥ
workbench.action.debug.stop                     デバッグ中断
editor.debug.action.toggleBreakpoint            ブレークポイント設定・削除トグル
editor.debug.action.addWatchExpression          監視対象に追加

workbench.action.editor.changeLanguageMode          言語モードを変更

workbench.action.files.copyPathOfActiveFile         編集中のファイルのパスをコピー
workbench.action.files.revealActiveFileInWindows    編集中のファイルをFinderで表示
workbench.action.files.newUntitledFile              新規ファイル
workbench.action.files.openFileFolder               フォルダを開く
workbench.action.files.save                         保存
workbench.action.files.saveAs                       別名で保存


workbench.action.files.showOpenedFileInNewWindow    新しいウインドウで開く


workbench.action.focusFirstEditor       最初のペインにフォーカス
workbench.action.focusSecondEditor      二つ目のペインにフォーカス
workbench.action.focusThirdEditor       三つ目のペインにフォーカス
workbench.action.focusLeftEditor        左側のペインにフォーカス
workbench.action.focusRightEditor       右側のペインにフォーカス
workbench.action.focusSideBar           サイドバーにフォーカス
workbench.action.moveActiveEditorLeft   編集ペインを左に移動
workbench.action.moveActiveEditorRight  編集ペインを右に移動

workbench.action.newWindow                  新規ウインドウ



workbench.action.quickOpen                  クイックオープン(各種項目の簡易呼び出し)
workbench.action.quickOpenNavigatePrevious  クイックオープン時の前の選択
workbench.action.quickOpenNavigateNext      クイックオープン時の次の選択
workbench.action.gotoLine                   : 指定行に移動
workbench.action.gotoSymbol                 @ シンボルに移動(jsonのkeyデータや、各言語の変数・関数・クラスなどの識別子の定義)
workbench.action.showAllSymbols             # プロジェクト全体から検索してシンボルに移動
workbench.action.showCommands               > エディタが持っているコマンドを実行
workbench.action.showErrorsWarnings         ! エラー・警告を表示
editor.action.goToTypeDeclaration           型定義へ移動

workbench.action.splitEditor                エディタを分割


workbench.action.tasks.build                    ビルド
workbench.action.tasks.test                     テスト
workbench.action.tasks.runTask                  タスク実行
workbench.action.tasks.terminate                タスクの中断
workbench.action.tasks.configureTaskRunner      タスクランナーの設定
workbench.action.tasks.showLog                  ログを開く

workbench.action.terminal.openNativeConsole     ターミナル(コンソール)を開く

workbench.action.toggleFullScreen           フルスクリーンにする・戻す トグル

workbench.view.explorer                     エクスプローラーを選択
workbench.view.search                       サーチビューを選択
workbench.view.debug                        デバッグモードを選択
workbench.action.toggleSidebarVisibility    サイドバー表示・非表示 トグル


workbench.action.zoomIn                     ズームイン
workbench.action.zoomOut                    ズームアウト
workbench.action.zoomReset                  ズームリセット


editor.action.openLink                      リンクを開く
workbench.action.toggleSidebarPosition      サイドバーの位置を変える
workbench.action.closeAllEditors            全てのエディタを閉じる
workbench.action.cycleEditor                エディタを切り替える

workbench.action.files.saveAll              全て保存
workbench.action.files.saveFiles            保存
workbench.action.files.toggleAutoSave       オートセーブ トグル
workbench.action.files.revert               元に戻す
workbench.action.files.newFolder            新規フォルダ
workbench.files.action.compareFileWith      ファイルを比較

workbench.view.git                          Gitビューを表示
workbench.action.git.executeGitCommands     Git命令を実行

workbench.action.output.showOutput          出力を表示
editor.action.clearoutput                   出力内容を消去
workbench.action.output.toggleOutput        出力の表示・非表示 トグル

workbench.action.openPreviousEditor         前開いたエディタを選択する(navigate history)
workbench.action.navigateBack               前のエディタを開く
workbench.action.navigateForward            次のエディタを開く

workbench.files.action.closeAllFiles            全ファイルを閉じる
workbench.files.action.closeFile                ファイルを閉じる

workbench.files.action.addToWorkingFiles        WORKING FILESに現在のファイルを追加
workbench.files.action.openPreviousWorkingFile  前のワーキングファイルを開く
workbench.files.action.openNextWorkingFile      次のワーキングファイルを開く


workbench.action.markdown.showWelcome       ウェルカム画面の表示

workbench.action.openGlobalSettings         環境設定
workbench.action.editor.changeEOL           改行コードの変更
workbench.action.editor.changeEncoding      エンコーディングの変更
workbench.action.openGlobalKeybindings      キーバインディング設定を開く
workbench.action.openWorkspaceSettings      ワークスペースの設定を開く
workbench.action.changeToLightTheme         ライトテーマに変更
workbench.action.changeToDarkTheme          ダークテーマに変更



workbench.action.toggleDevTools                 デベロップツール開く・閉じる トグル
workbench.action.openWorkerDevTools             デベロップツールを開く
workbench.action.closeWorkerDevTools            デベロップツールを閉じる

workbench.action.reloadWindow                   ウインドウのリロード

workbench.action.openSnippets                   スニペットを開く
editor.action.referenceSearch.trigger           リファレンス検索
closeReferenceSearch                            リファレンス検索を閉じる


workbench.action.markdown.togglePreview         makedownのプレビュー表示・非表示 トグル

workbench.action.search.toggleQueryDetails     
editor.emmet.action.expandAbbreviation

editor.action.toggleTabFocusMode


editor.action.inPlaceReplace.down
editor.action.inPlaceReplace.up


editor.action.selectHighlights

editor.action.changeAll
leaveChangeAllMode

closeMarkersNavigation
closePeekDeclaration

// クイックフィックス
editor.action.quickFix
acceptQuickFixSuggestion
closeQuickFixWidget
selectNextPageQuickFix
selectNextQuickFix
selectPrevPageQuickFix
selectPrevQuickFix




以下、"when"の実効タイミングに書くもの一覧。&&で区切って複数設定できる。!で論理否定も可能。||は無いみたいなので、設定を複数ならべることで対処する。
editorTextFocus                 テキストエディタにフォーカスが合っている
editorFocus                     エディタにフォーカスがある
editorHasSelection              何か選択している
editorHasMultipleSelections     複数カーソル使用中
suggestWidgetVisible            インテリセンス表示中
editorLangId == 'csharp'        C#モード
editorLangId == 'typescript'    TypeScriptモード

inPeekDeclarationEditor
inReferenceSearchEditor
editorTabMovesFocus

// 各種UIの状態
findWidgetVisible				検索ウィジェット表示中
inSnippetMode                   スニペットモード
inChangeAllMode
inInnerEditor
inDebugMode
inQuickOpen

markersNavigationVisible
peekDeclarationVisible
referenceSearchVisible
parameterHintsVisible
quickFixWidgetVisible
renameInputVisible
globalMessageVisible
searchViewletVisible

 とまぁこんな感じで、よくわから無いところはエディタを使い込むうちに、追い追いわかってくるだろう。

環境設定

 キーバインディングの時点でうだうだ言ってた人間が、他の設定をデフォルトのまま使うわけもなく。
 当然、環境設定も変更。

 こちらは、キーバインディングと違って、デフォルト設定ファイルの方に結構ちゃんと解説(英語だけど)があるので大抵はわかる。
 しかし、よくわからないものもやっぱりいくらかある。
 私はとりあえず、以下のような設定の変更を行った。

{
	"editor.fontFamily": "Source Han Code JP",     // フォント
	"editor.fontSize": 18,                         // フォントサイズ
	"editor.renderWhitespace": true,               // 空白文字を表示
	"files.trimTrailingWhitespace": true,          // 行末の空白文字を削除
	"explorer.workingFiles.dynamicHeight": false,  // WORKING FILES の高さを自動変更しない
	"editor.wrappingColumn": 0,                    // 行の折り返し文字数(0はウインドウ幅)
}

 という感じで、まだあまり変更していないが、気に入らないところがあったら適宜変更していく予定。
 この設定、自動でフォーマットする設定が多いせいか、若干動作が遅くなった気がする…

 あと、エディタの表示テーマを[View]-[Thema]から選べる。デフォルトはDarkだが個人的にはLightが好きなので変更、前はHigh Contrastってのがあったきがするが…
 さらに詳細なテーマは設定ファイルを書き換えることで可能なようだが、仕様が変更されそうな予感がするし、Lightで概ね満足したので、そこは深く追求しないことにする。
 QiitaでVisual Studio Codeのタグを見れば、色々と記事が出てくるので、そのへん参考にするといいのでは。

 あと、[File]-[Auto Save]もONにしている。
 予想つくと思うが、しばらく入力がないと自動的に保存してくれる機能だ。無意識にcmd+sを押すような人間は、ONにしておいていいと思う。

基本的な使い方

 cmd+pでコマンド入力パレット(ウィジェット:入力付きプルダウンメニュー的な何か)が開くので、ファイル名を入力すると適当に検索して開ける。
 そこで?を入力するとヘルプが出てくる。
 特定の記号を入力すると、エディタの機能を呼び出せたり(>)、プログラミングコード内の定義箇所を呼び出せたり(@)、行数でジャンプできたり(:)、エラー・警告一覧を表示できたり(!)いろいろできる。
 デフォルトで、それぞれの記号をあらかじめ入力した状態でパレットを開くショートカットも設定してある。
 エディタの機能(>)については、割と感でそれっぽいコマンドを入れると出てくるので、マウスを使わずにメニューを選択できて便利。使いやすいショートカットキーを割り当てておくといいと思う。ちなみに、デフォルトではshift+cmd+p(とf1)に設定されていて、私はcmd+yに設定し直している。
 ところで、f1とかMS的にはヘルプじゃなかったっけ?
 このへんのコマンド呼び出し関連は([View]と[Go])メニューに存在しているので、最初のうちはメニューで選んでもいいかもしれない。

 VSCは補完機能が充実していて、それっぽいところでctrl+spaceを入力すると、コード補完(インテリセンス)が働き、↑↓キー(や追加の文字入力)で選択してタブ(等)で確定できる。
 コードスニペット(定型文)の入力は、一覧から選択するのではなく、設定した文字列を入力したあとにタブを押すことで入力される。
 例えば、HTMLモードで、html:5と入力してタブを押すと、HTML5の雛形が展開される。基本的にHTMLモードでは、アルファベットを入力してタブを押すと、HTMLタグに変換される。
 さらに、div.xのように、ドットで区切った後にタブを入力するとドット以降はクラス名と判断される。
 div#xのように#で区切ってタブだとidと判断される。
 他にもdiv*5と入力するとdiv要素が5つ作られ、dt+ddと入力すると続けて要素が作られ、ul>liと入力すると階層を持った要素が生成され、これらを組み合わせて指定できる。
 これは便利!!

 しかし、各モードでどのような入力が可能なのかの一覧を見つけきれず、潜在的な能力はありそうなのに全然使えてない。
 とはいえ、例えばTypeScriptではclassの後にタブ入力するとクラスのスニペットが展開されるとか、そこそこ直感的な作りではあるので、とりあえずそれっぽいのを入力したらタブを押す癖をつけておくといいかもしれない。
 偶然見つけたのだが、キーバインディングを設定している時に_の後タブで、キー設定の雛形が入力できる。とか、どっかに書いててもらえないとわかんないよ。

 ちなみに、デフォルトでは()や[]、{}などの括弧は対応した綴じ括弧が自動入力される。
 また、TypeScriptやJavaScriptでは/**を入力するとJSDOC用コメント入力と判断されて、コメント綴じ記号*/か付くし、その間は行頭に*も追加されるようになっている。
 正直MS Wordの入力補完はほとんどの場合ヴザいのだが、VSCの補完は適切で心地よい。
 なお、スニペットは[Code]-[Preferences]-[User Snipets]から各自好きなものを登録できる。フォーマットは開いたファイルに書いてある。
 ざっくりと、prefixに書いた文字列の後にタブを入力するとbodyの内容が展開されるというもの。
 詳しくは、Editing Evolved - Snippetsを参照のこと。
 単に決められた文字列を展開するだけでなく、いろいろなプレースホルダ(置き換え)が使える。

 コードのエラーだとか警告の箇所には下波線が表示される。そこにマウスカーソルを持っていくと、ティップが表示される。下に電球アイコンが表示されることもあって、そのアイコンをクリックすると、推奨されるいくつかの対処法が表示されて、適当に選ぶと適切なコードの挿入やファイルのダウンロードなんかが行われる。
 例えばTypeScriptで$()というjQuery的なコードが登場したら、$の部分に波線がつくので、そこにマウスカーソルを持っていくと電球アイコンが表示される。
 そこで、電球アイコンをクリックして動作を選ぶと、jQueryに必要な宣言コードが挿入され、なんとjQueryファイルおよびTypeScript用定義ファイルまで適切なフォルダにダウンロードされる。便利。
 宣言コードと定義ファイルがあればjQueryのようなライブラリもコード補完が効くようになる。素敵。
 このへんTypeScriptとC#に関しては、かなり充実しているっぽい。

 httpから始まるURLなんかは、cmdを押しながらクリックするとリンク先をブラウザやエディタで表示する(存在しない場合ファイルを作るように促してくる)など、cmdを押しながらクリック系にいろいろ機能が割り当てられている。
 ちなみに、編集中のエディタがリンク先のファイルに入れ替わった場合、デフォルトだとctrl+-で戻ってこれる([Goto]メニューにある)
 しかし、HTMLの編集中に自分自身を表示する方法はよくわからない…あるのか?

 デフォルトでshift+cmd+cに編集中のプロジェクトのディレクトリでターミナルを開く機能があり、なんというか困ったらシェルコマンドでなんとかしてくださいな、という雰囲気がある。
 大抵それでなんとかなりはするけど、エディタから直接スクリプトファイルを実行したりとかできないんでしょうかね?
 当然のようにAppleScriptには対応していないし、自動化関連の実装は後回しってことかな。

 他にももちろんたくさんの機能があるけど、コードのコンパイルやデバッグ、Gitによるバージョン管理に関しては次の機会に。

 今日はここまで。