0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

vscodeのvimを触ってみる

Last updated at Posted at 2024-12-15

この記事は釧路高専プログラミング研究部 Advent Calendar 2024の参加記事です

はじめに

突然ですが皆さんVimを知っていますか?Vimはテキストエディタの一種で、リリースから30年以上たった今でも根強い人気があります。私はもともと自分のPCでプログラムを書く際にVSCodeを使っていましたが、学校のC言語の授業ではVimを使うことが強制され、それがきっかけでVimのキーバインドの便利さに目覚めました。が、自分のWindowsにわざわざVimを入れるのはめんどくさかったので、VSCodeでVimの操作をすることにしました。その方法やVSCodeでのVimのカスタマイズ方法を紹介していきます。

VSCodeにVimの拡張機能を入れよう

VSCode Vimという拡張機能を入れることで、VSCode内でVimのキーバインドを利用することができるようになります。下の画像のように左のバーから拡張機能を選択し、そこの検索窓でVimと検索することでVimの拡張機能を手に入れることができます。
Videotogif.gif

基本的な操作方法

通常のVimと大体同じです。基本的にはhjklでカーソルを操作し、iキーなどで挿入モードに入ってから文字を打ち、ノーマルモードに戻ってキーの操作をするということの繰り返しです。わざわざモードを切り替えないと文字が打てないのは一見不便に感じるかもしれませんが、ノーマルモードでのキー操作でカーソルを動かすことで、キーボードのホームポジションからあまり動くことなく効率的にカーソルを操作することができます。vimの細かい操作方法についてはここでは触れませんので、気になる方はググってください。

ちょっとカスタマイズ

Vimの特徴の一つにカスタマイズ性の高さがあげられます。Vimはvimscriptと呼ばれるスクリプト言語を書くことで機能を独自にカスタマイズできます。VSCode Vimの場合vimscriptで設定を書かずに(一応でvimscriptも使えるみたいです)、settings.jsonと呼ばれるjson形式のVSCodeの設定ファイルに設定を書くことで自由にカスタマイズすることができます。ここでは一部をかいつまんで紹介しますがより詳しく知りたい場合はこちらをご覧ください(英語です)。

settings.jsonの開き方

とりあえず設定を書くためにsettings.jsonを開いてみましょう。
1.コマンドパレットを開く
Ctrl+Shift+Pでコマンドパレットを起動することができます。また上の検索窓に>を入力することでも同じくコマンドパレットが開きます。
Untitled-1.gif

2.検索窓にsettings.jsonと入力
settings.jsonと入力すると検索候補の欄にユーザー設定を開く(JSON)というものが出てきますのでそちらをクリックするとsettins.jsonが開きます。
Untitled-1.gif

キーバインドを変更する

VSCode Vimでは通常のVimと同じくモードごとにキーバインドを変更することができます。例えば、インサートモード時にjjと打ったらEscキーが打たれたことになってノーマルモードに戻るなどといったことが可能になります。

    "vim.insertModeKeyBindings": [
        {
            "before": [
                "j",
                "j"
            ],
            "after": [
                "<Esc>"
            ]
        }
    ], 

上記のコードをsettings.jsonに書き込むことで、インサートモード時にjjと打つことでEscが作動し、ノーマルモードに戻ることができます。beforeの部分に設定したいキーを入力し、afterの部分にその時に実行したいキーを入力する形です。また一つのモードに複数のキーバインドを設定する際にはモードごとに続けて書くことができます。

    "vim.normalModeKeyBindings": [
        {
            "before":["<C-t>"],
            "commands":[":tabnew"]
        },
        {
            "before":["<Esc><Esc>"],
            "commands":[":nohl"]
        }
    ],

この場合はノーマルモードの時にC-tを押すことで新たなタブを開くのと、Escを二回連続で押すと検索したハイライトを全てリセットするということになります。"before"の部分は先ほどインサートモードの設定をした時と文法が変わりませんが、その後の"after"だった部分が"commands"に代わっています。:tabnewや:nohlなどのコマンドラインモードでのコマンドをキーバインドに設定したい場合はcommandsで指定してあげる必要があるのです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?