この記事 is なに?
エディタ遍歴が
- 4年 : gedit(色付きメモ帳) & VisualStudio & Unity を遊んでフラフラ
- 2年 : vim
- 1年 : vscode
な感じの、やる気のない学生プログラマが、vimかぶれから抜けられない、現状の中途半端なvscode環境を解説します。
ちなみに、言語は、割といろいろ使います。
もともとC++をよく触っていましたが、最近数か月はReactとSpring Bootが主です。その前もPythonとかいろいろです。ラズパイもよく触ります。
vim時代の筆者の性能ざっくり
- 超簡単な入力・移動ショートカットは習得
- mapは登録しまくって魔改造
- pluginも有名どころ(NERDTreeなど)は一通り入れた
- neovimに手を出したり、deopleteとか補完に手を出したり
- したあたりで、vscodeの補完が強いらしい、しかもvimのキーバインドが使えるらしい、ということでvscodeに転向
vscodeに移行直後の感想
よかったところ
- 本当にvimのキーバインドが使えそう
- 補完強い!(各言語extensionの補完を使用)
- 初めからNERDTreeが生えている(フォルダ・ファイル一覧のことです)
- extensionにロマンを感じる
- 見た目がカッコいい
- 思ったより起動が速い(他のIDEは化け物重いイメージだった)
辛かったこと
- mapのやり方がわからず、settings.jsonでちまちま直書き
- たまにvimとvscodeのキーバインドが衝突する
- Ctrl + Shift + P でメニューを出すのに慣れない
- Ctrl + Shift + @ でターミナルを起動するのが、すごく手間
- アップデートが多すぎて、機能を追えない
- 謎の機能・依存が多く感じた (F5は便利だけど、中で何をしているんだ...)
- そこそこ重い
vscodeで今
以降直後から環境はあまり進化はしていませんが、ざっくりスタイルは定着してきました。
必須のextension
- Vim
- vimのキーバインドが使えます
- TabNine
- 入力補完がめっちゃかかります。なんかDeepでLearningしてるらしい。
- ただし、言語サポートの補完と違って、Javaのimportみたいな依存関係の解決は自動化しないので注意。
- Git系(GitLens/Git Graphなど)
- これは便利なのを適当に。
- Bracket Pair Colorizer
- 括弧に色が付きます。
- 各種言語サポート
- 補完、デバッガ、実行、デモ、Linterなどなど、適当に。
- syntax highlightはextensionを入れなくてもデフォルトで入っています。
- 各種Remote
- WSLとSSHを主に使ってます。
頻繁に使っているキーバインドや操作
- ファイル保存 (Ctrl + s)
- vim時代は使えなかった記憶がありますが、今は便利なので使ってます。
- 入力モードのまま、いったんファイルを保存して別の作業をしたりできます。
- カーソル移動 (vim系)
- gg(最上)、G(最下)
- 0(行頭)、$(行末)
- f(検索)
- hjkl(上下左右)
- 新しい行の追加 (vim系)
- o(下)
- O(上)
- コピー&ペースト(vim系)
- y(保存)
- p(下に貼り付け)、P(上に貼り付け)
- yの行数指定は、settings.json内に以下を追加することで、現在の行からの相対的な行数が表示され、便利になる。
"editor.lineNumbers": "relative"
- 入力切替
- i(入力モード)とEsc(標準モード)の使い分け。
- Escの代わりに、たまにjjを癖で叩いてしまうので、以下のキーバインドをsettings.jsonに追加している。このキーバインドは、同時に保存もする。
"vim.insertModeKeyBindings": [
{
"before": ["j", "j"],
"after": ["<Esc>"],
"commands": [
{
"command": "workbench.action.files.save",
"args": []
}
]
}
],
- 検索、置換
- 手早さが求められる場合は、vimの**:%s/before/after/g**
- 慎重に作業したい場合は、vscodeのメニューから編集や置換を行う。
- vscodeは複数ファイル横断の置換が便利。
- リファクタリングはよくわかっていない。確認のひと手間が面倒。
- プログラムの実行
- F5でなぜか動くものはF5。
- 動かないものは、ターミナルからコマンドを叩く。
- git
- ほぼGUIでOK。
最後に
- キーバインドがたまに衝突するなー、と思いながら、衝突するキーバインドは一切使っていないので、どれが衝突するかはもはや忘れた。
- dockerでどうこう、、みたいなのをやってみたい。dockerわからないけど。
- 実はvimキーバインドから完全に足洗ったほうが作業効率いいよ、とかあったら教えてほしい...。