まだ汚れを知らない若者だったころに「プログラムはね、これを使って書くんだよ」と言われて以来Vimは友達だと思ってずっと(15年くらい)使ってきたが、最近は、とくに新しく何かを書くときにはVSCodeを使うようになってきた。コードを書く間隔が広がってきたせいか、新しい技術や言語に対応することができておらず、なんか最初からいい感じになってるエディタを重宝する。歳を取ってきたからなんだろうな、と素直に思うけれど、自分向けになにかをカスタマイズすることにあまり熱を感じなくなっていて、すでにあるよいと分かっているものに自分を調整していくことを選ぶようになってきた。
とはいえ身体はVimに慣れきってるのでVSCodeを使い始めたときはVSCodeVimを使っている……いた、というのが今回の話。よくできてるとは思うが、とにかくu(アンドゥ)の挙動が本家と違うのがどうも身体に合わない。逆にストレスが高まってしまうのでもういっそ! ということで素のVSCodeを使ってみることにしたのだ!
つまるところエディタ内の移動や編集、検索も全部コントロールキーとかファンクションキーとか矢印キーとかを駆使していくということにほかならない。HHKB(とその類似キーボード)を使ってるので右手小指が鍛えられた。ちなみに前記のようにできるだけ素を使いたいのでキーマップも極力変更しないことにしている。Cmd+P でだいたいのやりたいことは召喚できるし、わりとマウスを使わされる機会が少ないのはいい。
とはいえ適材適所で、手軽に編集したい場合や込み入ったことをしたい場合には今もターミナルとVimで処理する機会は多い。
Vimでよく使っていたキーの対応
- V: 行を選択。意外と使っていたこれ。Cmd+L で実現できる。連打すれば選択が広がるのがよい。慣れすぎてブラウザのエディタ内で押してしまってアドレスバーに飛びがち。
- G: 特定の行にジャンプ。Ctrl+G してから行番号を入力。
- C-]: 定義やシンボルにジャンプ。F12 やその修飾で。これがあるので右親指をF12にしている。
- C-O: 元いた場所に戻る。Ctrl+- らしいけど誤爆しまくる&他のアプリと揃えたかったので Cmd-[ を設定した。
- J: 行の連結。そんなに使わん気がするけど。Ctrl+J でできる。
VSCodeで便利に使っている機能
- F2 でシンボルをリネーム
- Shift+Alt+H で Call Hierarchy を表示
- Cmd+D で単語を選択
- Cmd+T でシンボルにジャンプ
- Cmd+K Cmd+I でホバー情報出す
- デバッガ
- Copilot
VSCodeになくて困った(困ってる)やつ
- i(: カッコ内の文字列を選択や編集などのmotion。Expand Selection Ctrl+Shift+Cmd+→ という非人間的なキーバインドで、意味単位で選択範囲を広げることができるが、こんなの覚えられるわけない。……と書いてて気づいたけど修飾キーはmacOSのスクリーンショット Ctrl+Shift+Cmd+3 と一緒だな。これだったらわかるかも。
- :grep: ファイル内の文字列検索。もちろんエディタ内で検索できるんだけど、オプションを選びづらかったり入力するたびに結果が更新されるので敏感すぎて使いづらい。:grep なら -w をつけて単語マッチにしたり検索対象のディレクトリを絞ったりがキー入力で普通にできる。
- Quickfix。なんらかの検索結果とかエラー箇所を順番に見ていったりできるビュー。上記の :grep の検索結果とか。普通にエディタのバッファとして開かれるので、検索欄に文字を入力してしまって結果を壊したりしない安心感がある。VSCodeだと機能によってサイドバーに出たり下のパネルに出たりと使い方が違うのが難しい。
- Ctrl-X Ctrl-F: ファイルパスを補完。というかファイルパス周りは全体的に弱い。ファイルの保存とかにネイティブのダイアログが開くのにモタツキを感じる。ターミナルでtouchしてから開くとかしてる。
- Ctrl-X Ctrl-L: 行を補完。これ前と同じこと書くので補完してくれ~と願うときがある。Copilotだとまだちょっと遅い。
- 横移動が遅い。Alt+→ に大きく移動する方法がほしい。
- git diff した結果からファイルにジャンプするみたいなことがしたいけどなんか面倒。
あんまり拡張も入れてないんだよな。いいカスタマイズなど知ってる方はぜひ教えてください。