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によるバージョン管理に関しては次の機会に。
今日はここまで。