Vimの基礎知識

【Vimの基礎知識】VSCodeでVimを使う方法|GUIで再現するVim操作

あなたは普段、エディタの操作がOSごとに違って戸惑った経験はありませんか。

Mac標準のメモや、Windowsでよく使われる秀丸やサクラエディタ、terapadなど、GUIエディタの中では似たショートカットが使える場合もありますが、OSをまたぐとまったく別物の操作感に変わってしまいます。

エンジニアとして業務を進めると、結果的に複数のOS環境で作業する機会が増え、学習コストが3倍になるのは避けられません。

もし1通りの操作で統一できれば、労力は3分の1に削減されます。誰もが一度は「どの環境でも同じように使いたい」と感じるはずです。

ようやくVSCodeのようなWindows、Mac、Linuxのいずれでも事実上の標準として使えるエディタが登場しました。

さらに「VSCodeVim」を導入すれば、GUI環境でVimの軽快な操作性を再現でき、CUI中心のUnix環境とも感覚を揃えることができます。

本記事では、その導入から操作方法、応用設定までを最新情報に基づいて解説します。

Vimの基礎知識

🟢 Vimの基礎知識
📌 Linuxで必ず触れるテキストエディタの入門から応用までを体系化
 └─【Vimの基礎知識】入門から応用までを体系化した学習ロードマップ
   ├─ 入門編(初心者向け)
   | ├─ 【Vimの基礎知識】ゼロから始めるVim入門とモード終了、コマンド基本操作
   | ├─ 【Vimの基礎知識】テキスト編集の基本操作(挿入・削除・移動) 
   | ├─ 【Vimの基礎知識】viとvimの違い|現場で覚えるべきポイント
   | ├─ 【Vimの基礎知識】VimとEmacsの違い|Linux現場で使われるエディタの選び方
   | └─ 【Vimの基礎知識】主要コマンド一覧|移動・編集・検索・コピーモード切替の早見表
   ├─ 活用編(中級者向け)
   | ├─ 【Vimの基礎知識】検索・置換・コピー・ペーストの操作まとめ
   | └─ 【Vimの基礎知識】マウス不要!カーソルを乗せたら勝ち確定|ビジュアルモード
   ├─ 実践編(実務で役立つ)
   | ├─ 【Vimの基礎知識】Vimで複数ファイルを同時編集する方法とウィンドウ分割の基本
   | └─ 【Vimの基礎知識】外部コマンド&シェル連携でVimを超実用ツールへ進化
   ├─ 応用編(上級者向け)
   | ├─ 【Vimの基礎知識】マクロを活用した自動編集テクニック
   | └─ 【Vimの基礎知識】正規表現を使った高度なテキスト編集
   └─ 設定編(カスタマイズ)
     ├─ 【Vimの基礎知識】Vimを使いこなす基礎:.vimrcで快適な開発環境を構築する方法
     └─ 【Vimの基礎知識】VSCodeでVimを使う方法|GUIで再現するVim操作

VSCodeでVimを使う全体像

Vimは軽快なキーバインドとモード操作によって、多くの開発者から愛用されています。しかしターミナルベースでの利用に限定されるため、GUI環境での快適さを求めるユーザーにとっては敷居が高く感じられることもあります。

そこで、VSCodeにVim操作を導入することで、GUIの便利さとVimの効率性を同時に享受することが可能になります。

公式拡張機能「VSCodeVim」を使えば、hjklでの移動やモード切替などの基本操作を再現でき、さらにNeovim連携によってより高度なカスタマイズも実現できます。

VSCode上でVim操作を再現する意義

VSCodeにVimの操作体系を取り込む最大の意義は、生産性の向上にあります。

マウスを使わずにキーボードだけで編集作業を進めることは、長時間のコーディングでも疲労を軽減し、集中力を維持する効果があります。また、Vim独自のテキスト操作コマンドを活かすことで、繰り返し作業や複雑な編集を短時間で処理できるようになります。

これまでVimに慣れ親しんできた方だけでなく、新しく取り入れる方にとっても、VSCode上で学びながら自然にVimの操作を習得できるメリットがあります。

多くのエンジニアが「Vim操作はなんとなく有益そう」と感じていると思いますが、実際に学習へ踏み出せない理由は学習コストです。OSが変わればエディタの操作も変わり、そのたびに覚え直すのは面倒で、時間の無駄と感じてしまうのです。

Windowsには秀丸やサクラエディタ、Terapadといった文化があり、MacにもCotEditorをはじめとする伝統があります。UnixはそのままVimを使えますが、結局は環境ごとにバラバラの操作を覚える必要がありました。

そこへ登場したのが、Microsoftが提供するVSCodeです。いまや全OS対応であり、事実上の標準エディタとして多くの現場で市民権を得ています。VSCodeが導入禁止になるケースはほとんどなく、申請して断られることはまずありません。

VSCodeを経由するメリット

  • OSごとに異なるエディタ操作を覚える必要がなくなる

  • 苦手意識を持ちやすい黒い画面(ターミナル)を避けられる

  • 必要な操作を設定や拡張機能で追加できる

  • 多岐にわたるプログラム開発をこれ一つで完結できる

  • 豊富な拡張機能があり、Microsoft公式の継続サポートで安心して利用できる

  • 言語サーバープロトコル(LSP)に対応し、補完・エラー検知・定義ジャンプを複数言語で統一できる

  • 軽量でクロスプラットフォーム、どのOSでも同じ環境をすぐに構築できる

  • Gitとの統合が標準で可能で、差分表示やコミット操作をエディタ内で行える

  • SSH接続やコンテナ、WSLなどのリモート開発に対応している

つまり、VSCodeを通じてVimのパワフルな機能を自分のものにできれば、環境に左右されず圧倒的な効率で作業できるようになります。それはまさに、上級エンジニアへの階段を一段登ることにほかなりません。

対象読者と利用シーン

対象となるのは、すでにVimに慣れている開発者だけでなく、普段はGUIエディタを利用しているが効率的な編集操作に興味がある方です。

特に、プロジェクト規模が大きくなり、ファイル編集や検索・置換を繰り返す作業が増える場面で効果を発揮します。

リモート環境ではターミナルVimを、ローカル環境ではVSCodeVimを併用することで、開発環境の切り替えによる違和感を最小限に抑えることも可能です。

GUI上で学んだ操作をそのままVim本体にも活かせるため、学習コストを下げつつ幅広いシーンに適応できる点が大きな魅力です。

前提となる環境

VSCodeからConoHaサーバーへリモートアクセスするには、まず前提として環境を整えておく必要があります。

必須となるのは「Remote - SSH」拡張機能のインストールと、~/.ssh/config への接続設定の記述、さらに秘密鍵ファイルの権限設定です。

例えば、~/.ssh/config に以下のような内容を書いてあるとします。

Host conoha
HostName 123.45.67.89
User bepro
IdentityFile ~/.ssh/id_rsa_conoha

この設定が完了していれば、ターミナルからの接続は非常に簡単で、次のように入力するだけでConoHaへログインできます。

ssh conoha

同じことをVSCodeで行う場合は、GUI上から操作します。

まず Ctrl+Shift+P(Macは Cmd+Shift+P)でコマンドパレットを開き、「Remote-SSH: Connect to Host...」と入力します。

候補一覧に conoha が表示されるので選択すると、そのままリモート環境としてConoHaへ接続されます。

つまり、ターミナルで実行する「ssh conoha」と、VSCodeのコマンドパレットから行う「Remote-SSH: Connect to Host...」は同じ動作を指しています。

あらかじめssh設定を済ませておけば、以後は追加のオプションを覚える必要はなく、どちらの方法でも素早くリモート接続を開始できます。

なお、VSCodeの導入自体がまだの場合は「【Windows / Mac対応】VSCodeのインストールと日本語化・初期設定方法」を参考にしてください。

SSH設定を含めたリモート接続の詳細な手順については、「【VSCode × VPS リモート接続手順まとめ【SSH設定対応】」で詳しく解説しています。

導入と基本設定

VSCodeにVimの操作性を取り入れるためには、まず拡張機能の導入と初期設定が必要です。

GUI操作だけで完結するため、ターミナルが苦手な方でも安心して環境を整えられます。

ここでは拡張機能のインストールからNeovim連携まで、効率よく進める方法を紹介します。

VSCodeVim拡張のインストールと有効化

最初のステップはVSCodeの拡張機能パネルを使ったインストールです。

サイドバーの「拡張機能」を開き、検索欄に「Vim」と入力すると「Vim (by vscodevim)」が表示されます。

これを選んでインストールすれば有効化され、すぐにhjklでの移動やモード切替など基本操作が可能になります。

初期設定と基本オプション(vim.useSystemClipboardなど)

インストール直後でも利用できますが、そのままだと細かい操作で不便を感じる場面があります。

そこで最初に調整しておきたいのが「クリップボードの連携」です。

通常のコピー&ペーストをVim操作でも違和感なく使えるようにするためには、設定画面でオプションを有効化します。

VSCodeの右下にある歯車アイコンから「設定」を開き、検索欄に「vim.useSystemClipboard」と入力してください。

表示された項目にチェックを入れると、システムクリップボードとVimのコピー・ペーストが統合されます。

設定ファイルに直接書き込む場合は、次のように追記します。

"vim.useSystemClipboard": true

.vimrc / vimrc ファイルの読み込みサポート

ターミナルで利用しているVimの設定をVSCodeでもそのまま活かしたい場合は、VSCodeVimに.vimrcを読み込ませることができます。

これにより、環境を切り替えても操作感を統一でき、余計な学習コストをかけずに済みます。

普段から使い慣れているキーマップやプラグインをそのまま呼び出せるため、VSCodeを導入しても違和感なく作業を継続できます。

まず、VSCodeの設定ファイルである settings.json を開く必要があります。開き方は二通りあります。

「{}(JSONで開く)」ボタンから設定する方法

  1. 画面左下の歯車アイコンをクリックして「設定」を選択します。

  2. 設定画面が開いたら、右上にあるアイコン群の中から「{}(JSONで開く)」ボタンをクリックします。
    → これでsettings.jsonが直接エディタに表示されます。
  3. すると、同じようにsettings.jsonがエディタに開きます。 開いたsettings.jsonに以下を追記してください。

    "vim.vimrc.enable": true,
    "vim.vimrc.path": "~/.vimrc"

もし環境によって「{}」ボタンが表示されない場合は、コマンドパレットを利用します。

コマンドパレットから設定する方法

  1. Windows / Linuxは Ctrl + Shift + P、Macは Cmd + Shift + P を押します。

  2. 表示された入力欄に「Preferences: Open Settings (JSON)」と入力し、Enterを押します。

  3. すると、同じようにsettings.jsonがエディタに開きます。 開いたsettings.jsonに以下を追記してください。

    "vim.vimrc.enable": true,
    "vim.vimrc.path": "~/.vimrc"

これでVSCode起動時に指定した.vimrcが読み込まれるようになります。ターミナルVimとVSCodeVimの操作体系をそろえることで、どの環境でも同じキーバインドや設定で作業でき、結果として効率が大きく向上します。

キーリマップの基本(例:jjでEscへ)

Vim操作に慣れていないと、Escキーを押すたびにホームポジションから手を離してしまい、不便さを感じやすいです。

VSCodeVimでは、設定ファイルにキーリマップを追加することで、この動作を改善できます。

特に多くのユーザーが利用するのが「jjでEscを入力する」設定です。

これを導入すると、入力モードから素早く通常モードへ切り替えられ、快適に操作できます。

この設定はVSCodeの settings.json に追記します。

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

下記は既存の settings.json の一例です。

{
 "editor.fontFamily": " Monaco, 'Courier New', monospace,メイリオ",
 "files.autoSave": "onWindowChange",
 "editor.tabSize": 4,
 "editor.formatOnSave": true,
 "vim.useSystemClipboard": true
}

この場合は次のように追記してください。

{
 "editor.fontFamily": " Monaco, 'Courier New', monospace,メイリオ",
 "files.autoSave": "onWindowChange",
 "editor.tabSize": 4,
 "editor.formatOnSave": true,
 "vim.useSystemClipboard": true,
 "vim.insertModeKeyBindings": [
  { "before": ["j","j"], "after": ["<Esc>"] }
 ]
}

これで、入力モード中に「jj」と続けて押すと、Escキーを押したのと同じ動作になり、ホームポジションを崩さずにモードを切り替えることができます。

上記はあくまでも「jj」を例にした設定方法の一つであり、実際に利用する場合は、自分が押しやすいキーや作業スタイルに合わせて自由に変更できます。

Neovimバックエンド連携(VSCode Neovim拡張)

VSCodeVimだけでも十分ですが、Neovimを連携させることで本格的なプラグイン活用や設定を再利用できます。

これまでターミナル上でNeovimを利用してきた方にとって、VSCodeとの連携は大きな魅力があります。普段使い慣れた操作感を維持しつつ、GUIエディタの利便性と統合できる点が、Neovim経験者にとって大きなメリットになります。

Neovim拡張するメリット

  • Vim/Neovim専用の高度なプラグイン(例:ファジーファインダー、LSP連携、Tree-sitter)をそのまま利用できる
  • ターミナルVimで使っていた.vimrcやinit.vim/init.luaの設定を再利用できる
  • SCodeVim単体では再現しきれない細かな挙動(モーションやマクロ動作など)を本家Neovimと同じ感覚で扱える
  • VSCode側のGUIの利便性(拡張機能やファイル管理)と、Neovimの軽快さや柔軟性を両立できる

一方で、Neovimを使用していない方にとっては必須の設定ではありません。VSCodeVim拡張だけでも十分にVimの操作感を再現できるため、まずは基本的な操作に慣れてから必要に応じて導入を検討するとよいでしょう。

VSCodeVimだけでも、hjkl移動やモード切替など基本的なVim操作は問題なく使えます。しかしNeovimを連携させると、以下のような追加メリットがあります。

Neovimとは?
Neovimは、Vimをベースに改良されたテキストエディタです。Vimの操作体系を引き継ぎつつ、プラグイン開発のしやすさや拡張性を重視して設計されています。特にLuaによる設定や高度なプラグイン機能が特徴で、近年はVimの後継的存在として注目されています。従来のinit.luaやinit.vimに書き込んだ設定やプラグインをそのままVSCode上でも再利用できるため、新たに環境を作り直す必要がありません。

つまり、VSCodeを日常的なIDEとして使いつつ、必要に応じてVim/Neovimの本格機能も発揮できる「二刀流」の環境が作れるのが大きな強みです。

MacとLinuxサーバーにおけるNeovimのインストール要否

  • MacのVSCode + VSCodeVim拡張だけで使う場合
     → NeovimはMacにインストールすれば十分です。
     VSCodeがローカルでNeovimを呼び出すため、Linuxサーバーには不要です。

  • MacのVSCodeからRemote-SSH拡張でLinuxサーバーに入って、サーバー上のファイルを編集する場合
     → NeovimはMacにインストールしておけばOKです。
     VSCode自体はMacで動いており、エディタ操作はMacのNeovimを呼び出す仕組みになるため、Linuxサーバー側には不要です。

  • inuxサーバーに直接SSHログインしてターミナル上でnvimを使いたい場合
     → この場合はLinuxサーバーにもNeovimをインストールする必要があります。
     つまり、GUIのVSCodeVim拡張経由ではなく、黒い画面(CUI環境)のNeovimを使うパターンです。

GUI環境の中でNeovimの柔軟性を取り入れたい方に最適です。

Neovimのインストール要件とパス設定

NeovimはVSCode拡張だけでは自動で導入されないため、まず各OSに直接インストールする必要があります。

公式サイトやパッケージマネージャーを利用して導入した後、VSCodeの設定に実行パスを登録することで、Neovimの高度な機能をVSCode上でも利用できるようになります。

インストールに必要な要件は以下の通りです。

インストール要件

  • Linux / Mac ではパッケージ管理システム(apt, dnf, brewなど)が利用可能
  • Windows では公式GitHubリリースから入手して PATH を通す作業が必要
  • インストール後は nvim コマンドでバージョン確認できる状態にする

NeovimはVSCodeVimと連携して高度な機能を利用するために必要です。OSごとに公式サイトやGitHubのリリースページからダウンロードできます。

Neovimのインストール

Windows
  • GitHub Releases から nvim-win64.zip または .msi をダウンロード
  • ZIP → 任意のフォルダに展開し、PATH を通す
  • MSI → インストーラを実行し、画面の指示に従う
macOS
  • Homebrew 利用:

    brew install neovim

  • 手動インストールする場合:
    1. GitHub Releases から macOS 用 tar.gz をダウンロード
    2. 展開して PATH を通す
Linux
  • パッケージマネージャを利用:
  • Ubuntu/Debian 系 →

    sudo apt install neovim

  • Fedora 系 →

    sudo dnf install neovim

  • 最新版を利用する場合:
    1. GitHub Releases から AppImage をダウンロード
    2. 実行権限を付与
動作確認

各端末で以下を実行してください。

nvim --version

【出力例:】

NVIM v0.11.4
Build type: Release
LuaJIT 2.1.1753364724
Run "nvim -V1 -v" for more info

このようにバージョン情報が表示されれば、Neovimのインストールは完了しています。

init.lua や init.vim の扱い

Neovim連携を行う際には、まず VSCode が Neovim 本体を正しく認識できるように、settings.json に実行ファイルのパスを指定する必要があります。

これを設定しないと VSCode 側が Neovim を呼び出せず、設定ファイルも反映されません。

"vscode-neovim.neovimExecutablePaths.linux": "/usr/bin/nvim"
"vscode-neovim.neovimExecutablePaths.darwin": "/opt/homebrew/bin/nvim"
"vscode-neovim.neovimExecutablePaths.windows": "C:\\\\Program Files\\\\Neovim\\\\bin\\\\nvim.exe"

この設定を行うことで、VSCode 上から Neovim が呼び出され、ターミナルで利用している init.lua や init.vim の内容を VSCode でも引き継げるようになります。

これにより、従来から利用しているキーマッピングやプラグイン設定を再利用できるため、ターミナルとVSCodeで操作体系が分かれることなく統一された環境を維持できます。

結果として、余計な学習コストをかけずに効率的に作業を進められるようになります。

設定ファイルの保存場所はOSによって異なります。

一般的には以下のディレクトリに配置されています。

Linux / macOS: ~/.config/nvim/init.lua
Linux / macOS: ~/.config/nvim/init.vim
Windows: %userprofile%\AppData\Local\nvim\init.lua
Windows: %userprofile%\AppData\Local\nvim\init.vim

これらのファイルに普段使っている設定を記述しておけば、VSCode 側でも同じ環境が再現されます。

たとえば以下のように記述すると、プラグイン管理を読み込んだ上で行番号が常に表示されるようになります。

require('plugins')
vim.o.number = true

【出力例:】

1 行目のテキスト内容
2 行目のテキスト内容
3 行目のテキスト内容

このように設定すれば、VSCode上のNeovim連携でも、ターミナルと同じように左端に行番号が表示されます。

リモート接続時の設定場所に注意

VSCodeからRemote-SSHでVPSに接続している場合、実際に動作しているのはVPS上のVimやNeovimです。

そのため、set number のような設定は VPS側の .vimrc や init.vim に記述してください。 M

acやWindowsのローカルに書いてもリモート環境には反映されません。

日常操作と効率化

Vimの基本操作をVSCode上でも再現できるようになると、作業効率が格段に向上します。

日々の編集作業で繰り返し使う操作をまとめて身につければ、マウスに頼らずスムーズにコード編集を進めることができます。

Vimの w や e といった単語移動コマンドは、プログラムコードのように英単語や記号で区切られたテキストに対しては効果的に働きます。しかし日本語文章ではスペースによる区切りが存在しないため、1文字ずつの移動になります。そのため日本語を編集する際は、この特性を念頭に置いて使うことが重要です。

ここでは代表的な移動や編集、検索、選択操作を整理して紹介します。 

モード移行とカーソル移動操作

Vimの基本は「モードの切り替え」と「カーソル移動」です。

モードの概念を理解し、カーソル移動を自由に使いこなすことで、エディタ内での操作スピードが格段に向上します。

i 挿入モードに切替
Esc ノーマルモードに戻る
h 左へ移動
l 右へ移動
j 下へ移動
k 上へ移動

カーソルが2行目中央にある場合、h を押すと左に1文字移動し、j を押すと3行目の同じ位置に移動します。

さらに、単語単位での移動も効率的です。 

w 次の単語先頭へ移動
b 前の単語先頭へ移動
gg ファイル先頭へ移動
G ファイル末尾へ移動

文章の先頭から G を押すと即座に最終行へジャンプします。

テキスト編集の基本(挿入・削除・移動)

挿入や削除などの編集コマンドは、文章やコードを効率よく扱うための基礎です。

単純な1文字削除から、行全体の削除やUndo・Redoまで、覚えておくと作業効率が大きく変わります。

x カーソル位置の1文字削除
dd 行削除
u 元に戻す(Undo)
Ctrl+r やり直し(Redo)
i カーソルの前に挿入
a カーソルの後ろに挿入
o 下の行に挿入
O 上の行に挿入

検索・置換・コピー・ペースト

検索や置換、コピーとペーストは繰り返し作業を効率化する中心的な機能です。

数文字のコマンドで目的の箇所を探し、編集や複製を素早く行えます。

/word 下方向に検索
?word 上方向に検索
n 次の検索結果へ
N 前の検索結果へ
:s/old/new/g 行内の文字列を置換
:%s/old/new/g ファイル全体を置換
yy 行コピー
yw 単語コピー
p 貼り付け(カーソル後)
P 貼り付け(カーソル前)

ビジュアルモードの活用

ビジュアルモードを使うと、範囲を選択してまとめて削除やコピーが可能になります。

文字単位・行単位・矩形単位を切り替えられるため、柔軟な編集が実現できます。

v 文字単位選択開始
V 行単位選択開始
Ctrl+v 矩形選択開始
d 選択範囲を削除
y 選択範囲をコピー
p 選択範囲に貼り付け

全体を俯瞰して次の一歩へ

ここまでで紹介した操作は、Vimを日常的に使う上で必須の基礎です。さらに体系的に学ぶためには、主要コマンドを一覧形式で整理した記事を確認すると、理解の抜け漏れを防げます。

応用設定・拡張機能連携

基本操作に慣れてきたら、さらに効率化や柔軟性を高めるために応用的な設定や拡張を取り入れることがおすすめです。

プラグイン風の機能やVSCode本体の拡張機能との連携を活用すれば、作業環境を自分好みに最適化できます。

ここではその具体的な方法を紹介します。

プラグイン風拡張の有効化(vim-surround)

Vimの操作をさらに快適にするために、軽量な拡張機能を追加できます。代表的なものが「vim-surround」です。

これらはVSCodeVimでも利用でき、削除と再入力を繰り返す手間を数キーの操作に置き換えられます。

ここでは実際にどのファイルを使い、どこにカーソルを置き、何を押せばどう変わるのかを、前提から結果まで省略せずに示します。

前提(囲み操作の例に使うファイル) ファイル名は sample.py とします。

次の内容が書かれていることを前提にします。

print(Hello)

vimでsampe.pyをきます(編集前のテキスト)

print([H]ello)

カーソル位置がHの徐状態で下記コマンドを実行(ysiwで単語をクォートで囲む)

ysiw'

解説 ysiw' は inner word を ' で囲む操作です。囲みたい単語のどこかの文字上にカーソルを置いてから実行します。

実行結果(編集後のテキスト)

print('Hello')

カーソル位置が括弧や空白上では狙いの単語を取得できず、意図しない結果になります。

シングルクォテーションをタブルクォテーションへ変更します。

実行(csでシングルクォテーションの囲みをダブルクォテーションへ入れ替える)

cs'"

結果(編集後のテキスト)

print("Hello") 👈 シングルクォテーションからダブルクォテーションへ置き換わった。

解説 cs"' は change surround の略で、既存の '… を "… に置き換えます。カーソルは置換対象の囲みの内側に置きます。

VSCode機能との共存設定(multi-cursorで3行同時置換:value→count)

Vimの操作では通常1行ごとに置換を繰り返す必要があります。

VSCodeのmulti-cursor機能を組み合わせれば、複数行を同時に編集することが可能です。

ここでは3行に書かれた「value」を一括で「count」へ変更する具体的な流れを示します。

前提(sample.txt の内容)

let value = 1
let value = 2
let value = 3

[ 実行手順 ]

  1. 1行目の「value」にカーソルを合わせる(ノーマルモードで開始)
  2. 下方向へカーソルを追加するため、次のキーを2回押す

    Ctrl+Alt+Down

    → 2回押すことで2行目・3行目の「value」にもカーソルが追加され、3つのカーソルが同時に有効になります。
  3. 3行すべてで「value」の先頭にカーソルが立った状態で次を入力

    ciw

    → 各行の「value」が削除され、即座に挿入モードへ切り替わります。
  4. 新しい単語を入力

    count

    → 3行分すべてに同じ単語が入力されます。
  5. 入力を確定し、ノーマルモードへ戻る

    Esc

    → 挿入モードが解除され、すべての行に「count」が反映された状態になります。
  6. 結果(編集後のテキスト)

    let count = 1
    let count = 2
    let count = 3

キーマッピングの高度カスタマイズ(leader キーなど)

Vimはコマンドの種類が多いため、そのままでは効率的に操作しづらい場面もあります。

そこで使われるのがキーマッピングです。従来は `.vimrc` に独自のショートカットを定義していましたが、VSCodeVimでは `.vimrc` を直接読み込まず、代わりに VSCode の `settings.json` に同様の設定を記述します。

特に「leaderキー」を設定しておくと、直感的なショートカットを自分好みに作ることができます。

たとえば半角スペースを leader に割り当てることで、「スペース+任意のキー」で様々な操作を一瞬で呼び出せるようになります。

設定例(.vimrc での記述と VSCodeVim の対応例)

(.vimrc の場合)
nnoremap <Space>w :w<CR>

(VSCode settings.json の場合)
"vim.leader": " ",
"vim.normalModeKeyBindingsNonRecursive": [
{ "before": [" ", "w"], "commands": ["workbench.action.files.save"] }
]

【実行例:】

スペース+w を押すとファイルが保存されます。

このように .vimrc で行っていたカスタマイズを settings.json に置き換えることで、Vimの利便性を保ちながらVSCodeの豊富な機能を同時に呼び出すことができます。

自分の作業スタイルに最適化したキーマッピングを設定すれば、長期的に見て作業効率に大きな差が生まれます。

トラブルと対処法

VSCodeVimを利用していると、便利さの一方で思わぬトラブルに遭遇することがあります。

ここではよくある問題を整理し、原因と具体的な解決策を示します。

あらかじめ理解しておくことで、快適な作業環境を維持できます。

キー競合・ショートカット無効化問題

VSCode自体にも多数のショートカットがあり、Vimのキー操作と重複すると想定通りの挙動をしないことがあります。

例えば、VSCodeのデフォルトでは `Ctrl+W` がウィンドウを閉じる動作に割り当てられていますが、Vimではウィンドウ分割操作に使われるため衝突が起きます。

このような場合は、VSCodeの「キーボードショートカット」画面を開いて設定を変更します。

Ctrl+K Ctrl+S

「ファイル」メニュー → 「基本設定」 → 「キーボードショートカット」画面が開き、競合するキー割り当てを確認・変更できます。

さらに、特定のキーを完全に無効化したい場合は keybindings.json を編集して設定します。

[{
"key": "ctrl+w",
"command": "-workbench.action.closeWindow"
}]

VSCodeのkeybindings.jsonに上記を追加すると、Ctrl+W のウィンドウ閉じが無効化され、Vimの Ctrl+W 操作が優先されます。

モード切り替えが効かない/反応しないケース

Vimの基本であるノーマルモードと挿入モードの切り替えが効かない場合は、VSCodeVim拡張の不具合や、他の拡張機能との競合が原因であることが多いです。

まずは、VSCodeの拡張機能タブから問題を切り分けます。

Ctrl+Shift+X

左サイドバーに「拡張機能」タブが開き、インストール済みの拡張一覧が表示されます。

不要な拡張機能を一時的に無効化し、Vim操作が回復するか確認してください。

それでも改善しない場合は、設定ファイル settings.json で VSCodeVimの有効化設定を確認します。

"vim.disableExtension": false

上記を設定後、VSCodeを再起動すると VSCodeVim拡張が正しく読み込まれ、Escキーでノーマルモードに戻れることを確認できます。

パフォーマンス問題・遅延の解決策

ファイルサイズが大きい場合や拡張機能を多く入れすぎた場合、入力に遅延が発生することがあります。

特にLSPや補完系の拡張と併用していると、Vimの操作レスポンスが落ちることがあります。

このような場合は不要な拡張の整理と設定の見直しが効果的です。

ファイルタイプごとに設定を限定することで、余計な処理を避けられます。

"[markdown]": {
"editor.quickSuggestions": false
}

Markdownファイル編集時のみ補完候補が無効化され、Vim操作の反応速度が改善します。

このようにトラブルとその解決策を知っておくことで、VSCodeVimを安定して利用できるようになります。

まとめ

本記事では、VSCodeでVim操作を再現するための手順や活用方法を段階的に解説しました。

導入から日常操作、さらに拡張やトラブル対処までを体系的に整理することで、VSCodeVimを安定して利用できる基盤を築けます。

ここでは改めて重要なポイントを振り返り、次の学習ステップを示します。

本記事ポイントのおさらい

まず、VSCode上でVimを利用する意義は、GUIエディタの快適さを保ちながらVimの強力な操作性を再現できる点にあります。

導入時には拡張機能のインストールと初期設定が必要であり、`.vimrc`や`init.vim`の読み込みやキーリマップの適用もサポートされます。

日常操作では、カーソル移動やモード切替をベースに、削除や挿入、コピー・ペースト、検索・置換といった基本機能を押さえることで、日々の編集効率が向上します。

さらに、ビジュアルモードを活用すれば範囲指定の編集も直感的に行えます。

応用面では、vim-surroundによる囲み操作や、VSCodeのmulti-cursor機能、leaderキーを用いた独自マッピングといった仕組みを組み合わせることで、より高度な操作性を実現できます。

これにより、自分の編集スタイルに合った環境を作り込めるのが大きな魅力です。

また、実際に利用する中で発生するトラブル(キー競合、モード切替不具合、処理遅延など)についても、VSCodeの設定や拡張の切り分けを行うことで安定性を取り戻すことが可能です。

よく読まれている記事

1

「私たちが日々利用しているスマートフォンやインターネット、そしてスーパーコンピュータやクラウドサービス――これらの多くがLinuxの力で動いていることをご存じですか? 無料で使えるだけでなく、高い柔軟 ...

2

Linux環境でよく目にする「Vim」という名前。サーバーにログインしたら突然Vimが開いてしまい、「どうやって入力するの?」「保存や終了ができない!」と困った経験をした人も多いのではないでしょうか。 ...

3

ネットワーク技術は現代のITインフラにおいて不可欠な要素となっています。しかし、ネットワークを深く理解するためには、その基本となる「プロトコル」と「レイヤ」の概念をしっかり把握することが重要です。 こ ...

4

この記事は、Linuxについて勉強している初心者の方向けに「Shellスクリプト」について解説します。最後まで読んで頂けましたら、Shellスクリプトはどのような役割を担っているのか?を理解出来るよう ...

5

Javaは世界中で広く使われているプログラミング言語であり、特に業務システムやWebアプリケーションの開発において欠かせない存在です。本記事では、初心者向けにJavaの基礎知識を網羅し、環境構築から基 ...

-Vimの基礎知識