開発環境, VSCode, editor, vim, IDE, git
VSCodeショートカット「ブラケットに移動」
VSCodeいじってたら何かのひょうしにこのページが開いた。
この2つ、知らなかった。特にJump to mathing bracketみたいなのはvscodevimでは対応しにくい (インサートモードを一度抜けないといけない)から、便利そうだ。
⇧⌘\ Jump to matching bracket
⌘] / ⌘[ Indent/outdent line
VSCodeでいろんな拡張機能が使えなくなった
VSCodeが突然、いろいろな拡張機能、たとえばPythonのリンタ・フォーマッタのRuff
が、「拡張機能を有効できません」というメッセージを出してくるようになった。1時間前には動いていたのに。
他の複数の拡張機能も起動不可能になっていた (たとえばgithub copilot)
それらを見てみると、VSCodeのバージョンと合わないらしい。しばらくVSCodeを起動しておらず10ヶ月前のバージョンであったためか?(でも、1時間前には動いていたことの説明はつかない)
ということで、VSCodeのバージョンを上げようとしたら、cannot update while running on a read-only volume
というエラーが出てできない。
そこで次の記事を見つけて、アプリケーションディレクトリから起動してみた。
そしたら、何も操作していないのにバージョンが最新版に変わっていた。
なぜだろう??キャッシュとか??
アップデートされたはずなのに、ダウンロードに時間がかかっている様子もなかった。UIも何も変わったように見えない。以下、こうなっていたのでは?という想像↓
本来は最新バージョンのVSCodeが動いていたはずが、キャッシュか何かが悪さをして、バージョン情報だけ古いものを参照していた。そのためいくつもの拡張機能がバージョン要求に合わないのをみて起動しなかった。しかし、「アプリケーションディレクトリから開く」という操作をすることによって、正しいバージョン情報を読み込むことができたので、特にダウンロードに必要な時間等もなく、もう一度VSCodeが問題なく動作し始めた。
解決
ダウンロードフォルダのVSCodeが起動しているのが原因だった。
普段、Cmd + SpaceででてくるSpotlight検索でVSCodeを起動していたが、何らかの理由でダウンロードフォルダに置きっぱなしだったVSCode実行ファイルがインデックスされてしまい、古い(インストール当時の)VSCodeが起動していた。
というわけで、ダウンロードフォルダから実行ファイルを消したらすべての問題が解決。Spotlight検索でも最新版が起動するようになったし、そこではそもそも拡張機能エラーも何も起こっていなかった
GitLensでブランチ間比較
PRを作成するときのようなブランチ間比較を、気軽に試せるようにしたかった。
調べたらでてきた。
ウインドウを移動する方法
すでに知っていた機能だが、昔これがなくて面倒だなと思っていた機能
たとえばノートパソコン + 外部モニターでプログラミング作業をしているとする。
このとき、外部モニター全画面でエディタを表示しつつ、ノートパソコンのモニターの方にREADME.mdを表示したい、というケースがあるとする。
こうした場合にはエディタのタブを右クリックして「新しいウインドウに移動」や「新しいウインドウにコピー」を押すと良い。
でもCursor × display link外部モニターの自分の環境だと若干動作が微妙やった。
ウインドウの移動等はできるものの、キーボード入力はすべてプライマリウインドウ側が受け付けてしまう、みたいな感じ。cursor単体が悪いのか、display linkが悪いのか、どちらでもなく他の設定が悪いのかは定かでないが、これらの環境に該当する方は注意が必要。
VSCodeVim設定
ノーマルモード時にIMEを無効化
公式で以下の方法が用意されていた。任意のサードパーティーツールによってIMEを変えられる、そしてim-select
がおすすめである、という事も書いてあった。
自分の場合はMacOSでGoogle IMEを使用しており、バックスラッシュ\
の入力のための設定もGoogle IME上で行っているので、default input methodもGoogle IMEにあわせてある。
IME切り替え用コマンドの追加
// install homebrew
brew tap daipeihust/tap
brew install im-select
settings.jsonの設定
"vim.autoSwitchInputMethod.enable": true,
"vim.autoSwitchInputMethod.defaultIM": "com.google.inputmethod.Japanese.Roman",
"vim.autoSwitchInputMethod.obtainIMCmd": "/opt/homebrew/bin/im-select",
"vim.autoSwitchInputMethod.switchIMCmd": "/opt/homebrew/bin/im-select {im}",
easymotionのいろんなコマンド
leader leader w
しか使ってなかったのだが、こんなにたくさんあるとは知らなかった。
1文字検索 (leader leader s 検索単語
) は、慣れればeasymotionによる移動が効きにくい日本語ドキュメント上でも活躍しそうだ。
作業ディレクトリ別々に用意する
ブランチ切り替えのたびにスタッシュするの面倒だと思ってたら、git worktreeというソリューションがあるらしい、、、、
マルチカーソルで長さの違う単語を一括で扱う
option + カーソル左右
というテクニックが紹介されている。これ使いこなせたら相当早くなるぞ
gitで特定ファイルに対するすべての変更を検索
複数の作業ブランチを行ったり来たりしていると、このエラーどこかで修正したはずなんだが、どのブランチでやってたかわからない…という問題に出くわすことがある。
そこで、特定ファイルに対する変更を全ブランチに対して検索する方法を調べた
git log --all --oneline -- <FILE_PATH>
// ↑この結果のコミットメッセージ等をヒントに探していく。
また、AIに聞いてみた所ソースコードを直接クエリ条件にいれて検索することもできるようだ
git grep -e '<SOURCE_CODE>' $(git rev-list -all)
理想をいえば、特定ファイルに対するblameを全ブランチ横断で検索してくれたら良いなと思うこともあるが、大抵の場合は上記2つの方法のどちらかで探せるだろう。
vimniumについて
ブラウザをvimライクに操作するvimniumだが、visual mode
でテキスト選択までできるとは知らなかった。
/search_words
みたいな感じでページ内検索をして目当ての文字に移動してから、v
を押してビジュアルモードに入るのが使いやすいみたい。
オススメ設定: inlay hints
"editor.inlayHints.enabled": "offUnlessPressed",
を設定すると、 Cmd + Ctrl
を押した時にインレイヒント (位置引数に名前を表示するとか) が出せる。