生粋の Neovim ユーザーが VSCode を使い始めたときのメモ。
これまでずっと neovim を使ってきたのだが、アメリカ滞在中に、リモートで日本の研究室のデスクトップに接続しプログラミングを行うために VSCode を使い始めた。
- remote-nvim など ssh 先で neovim を起動して編集する方法は、遅延が大きすぎて耐えられなかった
- mac であるため sshfs を使ってリモートのファイルをマウントするのが面倒。また仮にできたとしても、大量のファイルにアクセスしてコード解析を行う language server (pyright とか) が結局遅くなってしまうだろう
- いい機会だったので VSCode を使ってみることにした。結果、かなりの編集作業を移行できたが、Neovim でやった方が楽で早い作業はいくつもあるので、今後は両方併用していくことになりそう
移行する際に気になったこと
とりあえず Neovim の機能は VSCode Neovim を使ってあらかた再現できたので大きな問題はなかった。
ファイルを開くとき (プロジェクト内でファイル名を検索するとき) は Command + p。プロジェクト内で全文検索するときは Command + Shift + f。
Neovim に問題が起きたら Command + Shift + p で起動できるコマンドパレットから Neovim: Restart Extension で neovim インスタンスだけ再起動する。
VSCode 自体に問題が起きたら Developer: Reload Window、language server を再起動したかったら Python: Restart Language Server で再起動できたりと、問題が起きた要素だけ再起動できて問題が発生しないのもすごい。
とはいっても、pip3 等で新しいパッケージをインストールしたときには再起動しなくても import が成功するようになったりと気が利くので、LS を再起動する必要が生じることはほとんどないのだが。
VSCode においては不要なプラグインをインストールしない
lazy.nvim を使ってプラグインをインストールしているので、VSCode から起動されている Neovim では読み込まないよう cond を設定した。
例:
Is_vscode = vfn.exists('g:vscode') == 1
{
cond = not Is_vscode,
"folke/noice.nvim",
}キーを長押ししても連続入力されない
ここ に回答がある
defaults write com.microsoft.VSCode ApplePressAndHoldEnabled -bool falsej 長押しで下にスクロールしたりしたいのでとても重要。
しかし、しばらく VSCode を使っていてわかったのだが、スクロールするときにはマウスを使った方がいいので、そもそもキー長押しをする機会はあまりない
キーバインドが効かない
VSCode Neovim は、一部の Vim 標準キーバインドについて、vscode の機能にマッピングを行っている。そのため、大体の場合は neovim 側で (remap ありで) Vim 標準キーバインドへの設定を行うと vscode でも使えるようになる。
どの標準機能がマッピングされているかについては runtime/vscode/overrides にある。
set wrap
Option + z でトグル。
Command + , で開ける設定画面から word wrap を検索し on を選ぶことでデフォルト値を変更する。
ウィンドウにフォーカスする
入力カーソルを動かすためにわざわざ毎回マウスカーソルを動かしてクリックするのは Vim ユーザーとしては耐え難いが、キーバインドがちゃんとある
- メインウィンドウ:
Cmd + 1 - 左サイドバーのトグル:
Cmd + B- エクスプローラーは
Cmd + Shift + eなどタブごとにショートカットがある
- エクスプローラーは
- 右サイドバーのトグル:
Cmd + Option + B- AI チャットは
Cmd + Shift + i。インライン AI チャットはCmd + iなので法則性があって良い
- AI チャットは