*nix系のターミナルでの作業に慣れている人だと、改行させたい場合にEnterキーじゃなくてCtrl+mを使う人が多いと思います。右手をEnterキーまで動かす必要が無いので作業が速くなるし楽です。
しかし、その感覚のままVSCodeのVim拡張を有効化して作業するとイラッと来るのが、挿入モード時のCtrl+mの挙動です。例えば、
const hoge = {
まで書いてCtrl+mを押したら、以下のようになってほしいはずです。(インデントがスペース4個の場合)
const hoge = {
■ // <-ここにカーソルが来てほしい
}
しかし、実際には以下のようになってしまいます。
const hoge = {
■ // <- ここにカーソルが来てしまう
}
毎回Tabキーを押してインデントを合わせるのはだるいです。オートフォーマットがあるじゃないかと一瞬思いましたが、インデントのために毎回セーブするのもだるいです。
これを解決するために、Ctrl+mをEnterにマップしました。settings.jsonに以下のように書きます。
{
// ...省略
"vim.insertModeKeyBindingsNonRecursive": [
{
"before": ["<C-m>"],
"after": ["<Enter>"]
}
],
}
これでめでたく期待通りの動きをするようになりました。
ホストOSの方ですでにCtrl+mをEnterの挙動にマップしている場合はもしかしたら不要かもしれません。ホストOSのキーバインディングは、あまりいじるとアプリ固有のキーバインディングが食われるのであまりやりたくない派です。