少し便利なvim(for VSCode)のキーコンフィグ

はじめに

vimの操作は初学者にとって煩雑に感じることがあります。 特にワードを{}などで囲む際のysiwなどは長いっ!と感じてしまいます。 また、煩雑とは別に面倒くささも感じることがあります。 例えば、対応する括弧へのジャンプの%や行末ジャンプの$は非常に押しにくいキー配置ですよね。
実際のところ$Aで対応できますが、挿入モードにしたくない事情もあることでしょう...()

vimを使う方々のほとんどは「楽をしたい!」が根本にあると思います。
それなのに、押しずらいキーコンフィグを無理に使う理由はないですよね。なので押しずらいなぁ..めんどくさいなぁ..と思ったら変えてしまうが吉です。
(そもそも拡張のしやすさがvimの魅力ですね)

そこで、当ブログではvim初学者の私が便利と思ったキーコンフィグを紹介できればと思います。
また、私自身はVSCodeの拡張機能のVimを使用していますので基本的なキーコンフィグの記述はVSCodeのUser Settings(JSON)になります。

便利なLeaderキーについて

vimにはユーザーが自由にショートカットキーを作成できる機能があります。
Leaderキーと呼ばれるショートカットを開始するキーを設定することで簡単に作れます。 簡単に言うと、Ctrlキーのような最初に入力するキーです。
以下のようにLeaderキーを設定することが出来ます。

settings.json
// スペースキーをLeaderキーとして設定
"vim.leader": "<space>",

// MをLeaderキーとして設定
"vim.leader": "M",

モーション系のキーコンフィグ

Leaderキーにも触れたところで、私のキーコンフィグを紹介しようと思います。
まずはモーション系ですね。上記で触れた$%などです。
下記に対応表を載せます。
<Leader>は先ほど設定したLeaderキーです。

モーションコマンドショートカットキー
^ : 文字列の先頭ジャンプ<Leader> + l
$ : 行末ジャンプ<Leader> + h
% : 対応括弧ジャンプ<Leader> + m

JSONで以下のように設定することが出来ます。

settings.json
"vim.normalModeKeyBindingsNonRecursive": [
    {
        "before": [ "<Leader>", "h" ],
        "after": [ "^" ],
    },
    {
        "before": [ "<Leader>", "l" ],
        "after": [ "$" ],
    },
]

ちなみにNonRecuriveというのは、再帰的でないコマンドのときだけ使えます。
ysiwのように再帰的な処理があるコマンドはvim.normalModeKeyBindingsの中に記述するようにしてください。

設定しておくと便利なコンフィグ

キーコンフィグとは少しそれますが、VSCodeでvimを使っているなら設定したほうがいいコンフィグがあります。

OSのクリップボードと共有

初期設定では、VSCodeでyankをしてもOS側のクリップボードには共有されません。 そこで下記のように設定することでOS側のクリップボードと共有することが出来ます。

settings.json
"vim.useSystemClipboard": true,

行番号の相対表示

行番号はエディターの左側に表示されるあの番号ですね。
相対表示にすることで、vim特有の数字 + j,lがやりやすくなります。

settings.json
"editor.lineNumbers": "relative",

相対移動デモ
相対移動デモ

おわりに

大体こんなところです。
私自身まだvimに触れ始めたばっかりなので、今後色んな拡張をしていくと思います。
いい感じのキーコンフィグを見つけたら、追記していこうと思います。