vimで":"を";"にマッピングする

2024/10/01に公開

導入

本記事は(neo)vimを使用しており、かつ英字配列を使用している方向けです。

コロンはvimを使用していて最も押すキーの一つかと思います。
小指は力が弱いこともあり多く使用するべきではないという思想を持っているので、コロンを打つたびにShiftを左の小指で押さないといけない状況を憂いていました。

先輩の日本語配列キーボードを触っていて、「日本語配列だとコロンってShift押さなくていいんだよな」と思ったことをきっかけに、そもそも英字キーボードでもShiftを押さないようにキーバインドしてしまえばいいと気づきました。

以下、設定はneovim向けにluaで書きますが、vimでも同様に設定可能かと思います。(自分はfennelで設定ファイルを書いているので、もし不都合などあればコメントいただければ幸いです。)

基本設定

以下をneovimの設定ファイルに記載すればOKです。

vim.keymap.set({"n", "x", "o"}, ";", ":")

-- コマンド履歴表示の上書き、qで閉じるキーマップにディレイがかかるため好みで
vim.keymap.set({"n", "x", "o"}, "q;", "q:")

追加設定

上述の設定だけを行った場合、セミコロンの入力が不可能になってしまいます。
セミコロンはf, t, F, T後の移動に使用するので、使用不可になるのはあまり望ましくありません。
以下の2つのどちらかの好ましい方を追加すればよいでしょう。

vim.keymap.set({"n", "x", "o"}, ":", ";")
vim.keymap.set({"n", "x", "o"}, ";;", ";")

参考

https://vim.fandom.com/wiki/Map_semicolon_to_colon
https://news.ycombinator.com/item?id=9574729

Discussion