Insertを抜けるキーマップの選択肢
みなさん、Insert抜けるのって、どうしてますか?大方は、 <Esc> か jj の方が多いと思います。
ですが、別に jj じゃなくてもいいはずです。
ということで、最近の私のInsert抜けキーマップ事情です。
※この記事は、Vim駅伝の424本目の記事です。前回の記事は、 @thincaさんの、Meguro.vim #32 を開催しましたです。
要件
とりあえず、私は `jj` にしようかと思ったのですが、 `jj` 以外のものでやってみたい、と思いました。 ということで、とりあえずどのようなものがいいのか、を考えてみました。それが以下です。jj以外- 英語の文章&プログラミングで出てこない
- 打ちやすい
ということで、LLMに投げてみました、結果、 fj が良いということになりました。
で、矯正用に <Esc> をメッセージを表示する関数にマッピングして、やってみました。
改善フェーズ
実際にやってみたとこ、悪くなかったのはそうですが、この `fj` をしたあと、 `:w` や `:wq` をする頻度が高いことに気付きました。 ということで、マッピングしました。ホームポジションがいいので、それぞれ `fk` 、 `fl` にマッピングしました。 ただ、 `fl` が `float` などで意外と使うのです。ということで、 `fh` にマッピングし直しました。追記
`fk` を使う頻度が高いことに気付いたので `fj` と入れ換えましたこの状態で現在に至っています。
一応コードも出しておきます(内部システムを改造していたらシンタックスハイライトが壊れたままになっています。 ハイライト済みのものが見たい方は面倒ですがgistを見てください)。
vim.keymap.set('i', 'fj', '<Esc><Cmd>w<Cr>', { noremap = true })
vim.keymap.set('i', 'fk', '<Esc>', { noremap = true })
vim.keymap.set('i', 'fh', '<Esc><Cmd>wq<Cr>', { noremap = true })
vim.keymap.set({ 'i', 't' }, '<Esc>', vim.schedule_wrap(function()
vim.notify("Escは無効にしておいたぞ。代わりに 'fj' を使っとけ(^^)", vim.log.levels.WARN)
return ""
end), { noremap = true, expr = true })
