vscodeの導入
キーボードも同様だが、エディタもカスタマイズが過ぎると、いずれ開発が停止して時代に取り残された際、他の新テクノロジーに移行することが困難になる。 可能な限りニッチなカスタマイズをせず、メジャー、オフィシャルな拡張、および設定ファイルのシンプルな記述に留めて使用したい。
■キーバインディング
vscodeに移行する意味があるのかわからないがemacsバインディングをする。 本来であればこのタイミングでvisual studioベースの操作を訓練したいところではある。
●拡張機能の指定
emacsバインドはいくつかあるが、Awesome Emacs Keymap が更新も続いており、ユーザー数も多そうなのでこれで決定。
●setting.jsonの編集
デフォルトではctrl-Aの動作が異なっている様子。emacsでは行頭に移動だが、行頭↔先頭ワードのトグルになっているように見える。
●keybindings.jsonの編集
吊るしの状態で使いたいが、以下のスクロール、undo/redoに関するキーだけは定義しておく。本当はhalf scrollとか欲しい。file openはダイアログが開いてしまい、使い勝手が悪い。
せっかくなのでemacsながらwindowsベースのcopy/pasteを取り入れ、徐々にvisual studio標準に体を近づけていくことにする。
// scroll { "key": "ctrl+up", "command": "cursorPageUp", "when": "textInputFocus" }, { "key": "pageup", "command": "-cursorPageUp", "when": "textInputFocus" }, { "key": "ctrl+down", "command": "cursorPageDown", "when": "textInputFocus" }, { "key": "pagedown", "command": "-cursorPageDown", "when": "textInputFocus" } // // redo : ctrl + shift + / { "key": "ctrl+shift+/", "command": "redo", } // redo : ctrl + shift + \ { "key": "ctrl+shift+\\", "command": "redo", } // undo : ctrl + \ { "key": "ctrl+\\", "command": "undo", } // // file open { "key": "ctrl+x ctrl+f", "command": "workbench.action.files.openFile" } // // // // // // 全選択(windows ctrl+A) { "key": "ctrl+alt+a", "command": "editor.action.selectAll" } // // コピー : windowsコマンドを割り当ててしまう { "key": "ctrl+c", "command": "emacs-mcx.copyRegion", } // // ペースト : windowsコマンドを割り当ててしまう { "key": "ctrl+v", "command": "emacs-mcx.yank", "when": "editorTextFocus && !editorReadonly" }keybindings.json
■言語対応のExtension
vscodeを使う主たる目的はこれだろう。 もちろんMicrosoft謹製のextensionを吊るしで使う方向で使用する。
●C/C++ extension
IntelliSenseが使える。以前はなかった(?)ファイル内からの補間が可能になり、emacsにおけるdynamic abbrev相当が使えるようになったようで、vscodeへの移行を本格的に検討することにした。
●C# extension
こちらもIntelliSenseが便利。MSのドキュメントでは、継承したコントロールを調べても親のプロパティが見れないが、IntelliSenseなら補間対象にしっかりと出てきてくれる。
CodeLensは行間にreferencesが表示されるのが邪魔でoffにするが、そもそもこれが何なのか全然調べていない。
●Clang-Format extension
C++のフォーマッタはこちらを使用。
marketplace.visualstudio.com 2. C#
marketplace.visualstudio.com 3. Clang-Format
marketplace.visualstudio.com
●setting.jsonの編集
clang-formatの設定をしておく。.clang-formatファイルによるカスタムフォーマットなので"file"指定が必要。
//-------------------------------------------------- // Clang-Format拡張 //-------------------------------------------------- // clang-formatのパス "clang-format.executable": "d:/windows/bin/clang-format.exe", // fileで指定 "C_Cpp.clang_format_style": "file", // // //-------------------------------------------------- // C# : Microsoft C#拡張 : formatter込み //-------------------------------------------------- // C# : referencesをoffにする "editor.codeLens": false,setting.json
■その他のカスタマイズ
さすがに吊るしでは不便なことが多く、あまり変なことはしない程度にカスタマイズしておく。
●細かい設定
■files.exclude
除外するファイルを指定。少なくともプロジェクトのエクスプローラに反映される。その他何に影響するかは不明。
■files.associations
特定の拡張子のファイルに対して、任意の言語サポートをバインドする。
■window.newWindowDimensions
起動時のウインドウサイズを設定。前回終了時を引き継がせたい。
■workbench.editor.tabCloseButton
ファイルtabのcloseボタンを間違ってクリックするミスを防げる。"workbench"がどの範囲を示すか不明。
■editor.renderIndentGuides
インデントのガイドラインが邪魔だったので消す。
■editor.formatOnSave
セーブ時にformatterを実行する。
■editor.renderWhitespace
空白文字を表示するか。
■editor.renderControlCharacters
制御文字を表示するか。
■editor.minimap.enabled
イマドキっぽくて見栄えするが、結局役にたたなかったミニマップの制御。
■editor.lineNumbers
行番号表示
■editor.wordBasedSuggestions
ファイル内の単語を補完対象とする。
//-------------------------------------------------- // default //-------------------------------------------------- // 無視するファイル "files.exclude": { "**/*.*~": true }, // // 拡張子追加 "files.associations": { "*.hlsl": "cpp", "*.cg": "cpp" }, // // // 起動時のウインドウサイズ "window.newWindowDimensions": "inherit", // // // tabのcloseボタンをoffにする "workbench.editor.tabCloseButton": "off", // // // インデントガイド(インデントに沿って縦線を表示) : 色指定を参照 "editor.renderIndentGuides": false, // // セーブ時にformatter実行 "editor.formatOnSave": true, // // 入力時にformatter実行 "editor.formatOnType": true, // // etc "editor.renderWhitespace": "none", "editor.renderControlCharacters": false, "editor.minimap.enabled": false, "editor.lineNumbers": "on", // // ファイル内の単語を補完対象とする "editor.wordBasedSuggestions": true,setting.json
●フォント設定
デフォルトの"Consolas"ファミリーは綺麗でいかにもイマドキなエディタだが12pixelでは無駄に詰まって見づらい。やはり装飾性皆無、system font的なMSゴシックにせざるを得ないのか。
■edigot.fontSize
フォントサイズ
■edigot.lineHeight
改行サイズ
■editor.fontFamily
フォント
//-------------------------------------------------- // font //-------------------------------------------------- "editor.lineHeight": 12, "editor.fontSize": 12, "editor.fontFamily": "MS ゴシック, 'Courier New', monospace",setting.json
●カラー設定
//-------------------------------------------------- // color theme //-------------------------------------------------- "workbench.colorTheme": "Visual Studio Dark", "editor.colorCustomizations": { "comments": "#FF0000" }, "editor.tokenColorCustomizations": { "comments": "#f01010" }, "workbench.colorCustomizations": { // 背景色 "editor.background": "#101040", // インデントガイドの色を明るい青色( "#aaf" ) "editorIndentGuide.background": "#181840", // // scroll bar "scrollbarSlider.background": "#404080", "scrollbarSlider.hoverBackground": "#5050a0", "scrollbarSlider.activeBackground": "#6060c0", // tab color "tab.activeBackground": "#4060a0", },setting.json
■todo
せっかくのvscodeなのでIDE的にビルド、デバッグ、ソース管理なども取り入れたいが、追求するとキリがないので現段階ではここまでにしておく。以下、今後調べたいこと。
●プロジェクト管理、ビルド、デバッグ
visual studio同等のことができるのか?
●git(github)
tortisegitに慣れているので、移行する気はないが、一応調べておきたい。
●言語対応
追加されている機能について。カスタマイズなど。
■その他
軽量、高速、とのことだが、メモリ使用量はxyzzyのざっと100倍。xyzzyが100KBで収まっていたところ、vscodeでは10MBのメモリ圧迫。ファイルを多数開いたらどうなることか。
markdownによるコードセクション表示が楽そうだからはてなブログにしたのだが、ここで問題が起きてしまった。 vscodeで編集、そのまま記事にコピペ、のつもりだったのが、整形されるとマークダウン書式がインデントされてしまい、マークダウンとして認識されなくなってしまう。 そのうちformatterに手を入れたいが、とりあえずどうにかしておくしかない。