VSCodeでゆっくりVimに入門する
はじめに
vim慣れるとめちゃくちゃ便利なんだろうなぁと思いつつ、独特なキー操作に慣れる気がせずずっと放置していました。
しかし最近になって単語単位でカーソル移動したいなど、これvimを使えばいいのでは?と感じる回数が増えてきたので、ようやく重い腰を上げてVSCodeメインにしつつ、vimコマンドも使える環境を整えました。
軽くハマった点もあったので手順をまとめます。
環境
- MacBook Air M2
- macOS sonoma 14.3.1
手順
NeoVimのインストール
homebrewでneovimをインストールします。
brew install neovim
今回構築する環境はneovim(nvim)が裏で立ち上がって、VSCodeの拡張が通信することで成り立つらしいです。この辺りは以下の記事を参照させていただきました。
init.lua
の作成
neovimはスクリプト言語luaのエンジンを組み込んでおり、luaで書かれた設定ファイルを読み込めます。vimmerたちはこの設定ファイルこそが財産だそうです。
init.lua
は次のパスに作成します。
mkdir ~/.config/nvim
touch ~/.config/nvim/init.lua
このファイルにvimの標準コマンド以外の使い方をしたい設定などを書きます。
本当に色々あり、zennやQiitaのセットアップ記事を見るととんでもない情報量です。
しかし、私は超超初心者でよくわからないので次の設定だけ有効活用できています。最初かこれぐらいからゆっくり育てればいいよと友人に言われました。
vim.keymap.set('i', 'jj', '<ESC>', { silent = true })
インサートモードからノーマルモードに戻るとき、jj
と押せば良いという設定です。
<ESC>
やctrl+c
でも戻れますが遠いのでこれは快適です。
VSCodeの設定
VSCode Neovimのインストール
この拡張がnvimと通信してくれます。起動するとaffinity
云々を設定するか聞いてきますのでyes
で大丈夫です。
settings.jsonの設定
nvimの場所と設定ファイルの場所をVSCodeに教えてあげます。
cmd+shift+p
からsettings.jsonを開き、編集しましょう。先ほどのaffinity
の設定も含めるとsettings.jsonは次のようになっているはずです。
{
"extensions.experimental.affinity": {
"asvetliakov.vscode-neovim": 1
},
"vscode-neovim.neovimExecutablePaths.darwin": "/opt/homebrew/bin/nvim",
"vscode-neovim.neovimInitVimPaths.darwin": "/Users/<user_name>/.config/nvim/init.lua"
}
ここまででVSCodeでvimコマンドが使えるようになります!
keybindings.jsonの設定
いざ使ってみると先ほど設定したはずのjj
コマンドが効きません。
実はインサートモードの制御はVSCodeに移ってしまうので、nvimの設定(init.lua
)は無視されてしまうのです。
VSCode Neovim公式の案内に従って、keybindings.json
を編集します。
[
{
"command": "vscode-neovim.compositeEscape1",
"key": "j",
"when": "neovim.mode == insert && editorTextFocus",
"args": "j"
}
]
keybindings.json
がない場合もあるので、その時は基本設定>キーボードショートカット
を開き、右上のこいつを押してください。
結局、さっき設定したinit.lua
はjj
しか設定しない限り無用の長物ですが、色々設定していくと必要になりますし、nvim単体で使う場合には必要なのでそのままにしておきましょう。
感想
今回の構成はインサートモードで利用すれば、これまでのVSCodeのままであることが一番のポイントです。
単語ごとの選択をしたいケースや、ちょっとvimコマンド使って慣れていこうかな、という気分の変化に対応しながらvimに慣れることができます。
:w
で保存せずにcmd+s
で保存すればいい、別にマウスでカーソル移動してもいい。
でもvimコマンドを使えばもっと速いんじゃ...???
自分のinit.lua
が膨れていくのが楽しみです。
参考
本文中で触れていないものも含めて構築において参考にさせていただいた情報源を全て貼ります。
製作者の皆様、ありがとうございます。
そもそもの構築系
vim設定ファイルなど
Discussion