---
title: "Vim 9.2の新機能と最新バージョン確認・更新手順｜Enum・Tuple・Wayland対応とパッチ判定"
url: "https://www.issoh.co.jp/tech/details/11043/"
published: 2026-02-18
updated: 2026-10-22
categories: ["開発"]
publisher: "株式会社一創"
---

# Vim 9.2の新機能と最新バージョン確認・更新手順｜Enum・Tuple・Wayland対応とパッチ判定

Vim 9.2は2026年2月14日に公開されました。前版9.1（2024年1月2日）から2年1か月の間に積み上がったパッチ9.1.0001〜9.1.2148に区切りを付けた版で、Vim9 scriptの列挙型・ジェネリック関数・タプル型、補完のファジーマッチ、diffのlinematch、実験的なWayland対応、XDG Base Directory準拠が主な中身です。公開後もパッチはほぼ毎日積まれており、2026年10月22日時点の最新は9.2.1224です。その間にモードライン経由の脆弱性が2件（深刻度high）見つかり、9.2.0350でモードラインから変更できるオプションを絞る`'modelinestrict'`が既定で有効になりました。版番号が同じ9.2でも、パッチによって挙動が変わるということです。この記事では新機能の中身、リリース履歴と導入パッチ番号、公開後の変更、環境別の確認・更新手順をまとめます。

## まとめ：Vim 9.2の要点と最新バージョンの確認手順

- **区切りの付いた最新版はVim 9.2（2026年2月14日公開）**。ソースツリーの`src/version.h`の`VIM_VERSION_DATE_ONLY`と、公式の[Vim 9.2 released](https://www.vim.org/vim-9.2-released.php)で確認できる日付です。
- **2026年10月22日時点の最新パッチは9.2.1224**（公式リポジトリのタグ）。Windows向けの[vim-win32-installer](https://github.com/vim/vim-win32-installer/releases)の最新は9.2.1217（2026年10月21日）です。
- **目玉はVim9 scriptの型機能3点**（`:enum`、ジェネリック関数、`Tuple`型）、補完のファジーマッチと自動補完、diffの`linematch`と`diffanchors`、縦型の`tabpanel`。Wayland対応は公式告知でも「experimental」です。
- **9.2公開後に52件のセキュリティ勧告**（high 2件・medium 45件・low 5件）。high 2件はどちらも細工したファイルを開くだけでOSコマンドが実行されるモードラインの穴で、9.2.0272と9.2.0276で修正済みです。
- **9.2.0350以降は`'modelinestrict'`が既定でオン**。モードラインで変更できるのは`tabstop`や`shiftwidth`などの許可リスト内のオプションに限られ（9.2.0350では20個、検証した9.2.1217では21個）、`number`や`list`は黙って無視されます。
- **確認は`vim --version`の版番号と適用済みパッチ欄**。機能の有無は版番号でなく`has('patch-9.1.1232')`や`has('tabpanel')`で判定します。
- **配布元ごとに版がずれています**。Ubuntu 26.04 LTSは9.1.2141、24.04 LTSは9.1.0016、Homebrewは9.2.1200、wingetは9.2.1186です。Ubuntuは版番号を上げずに脆弱性の修正だけを取り込んでいます。

## Vim 9.2で入った主な変更点

公式の変更一覧は`:help version-9.2`（`runtime/doc/version9.txt`）にあります。「9.1と9.2の間に行われた改善」として記載されている内容を、実務でどこに効くかで5つに分けます。

### Vim9 scriptの列挙型・ジェネリック関数・タプル型

9.1でクラスとインターフェースが加わり、9.2では型に関する機能がさらに増えました。追加されたのは列挙型（`:enum`）、ジェネリック関数、タプル型（`Tuple`）です。組み込み関数をオブジェクトのメソッドとして呼べる`builtin-object-methods`、保護された`_new()`メソッド、クラス内の全メソッドを一括コンパイルする`:defcompile`も入っています。次のコードはVim 9.2.1217で実行し、`enum Color.Red {name: Red, ordinal: 0}`と`92`を出力しました。

```
vim9script

enum Color
  Red,
  Green,
  Blue
endenum

def Head<T>(items: list<T>): T
  return items[0]
enddef

var pair: tuple<string, number> = ('vim', 92)
echo Head<Color>([Color.Red, Color.Green])
echo pair[1]
```

書くときに踏みやすい点が2つあります。ジェネリック関数は呼び出し側にも`Head<Color>`と型引数が要り、この例をVim 9.2.1217で実行すると、省略時にはE1559になります。Vim9 scriptのコメントは`#`で、旧来の`"`を使うとE114です。タプルは`list<any>`と違い、位置ごとの型と要素数を型そのものに書けるので、関数から複数の値を返すときに型検査が効きます。プラグインを書く言語としてDenoと比べたい場合は[denops.vimとは｜Deno 2でVim/Neovimプラグインを書く仕組みと導入・開発手順【v8対応】](/tech/details/12611/)が参考になります。

### 補完のファジーマッチと自動補完

補完は`:help version-9.2`で記載量がいちばん多い領域です。`'completeopt'`に`fuzzy`を足すと挿入モード補完があいまい一致になり、`nosort`（並べ替えない）、`preinsert`（挿入予定のテキストをハイライト）、`nearest`（カーソルからの距離順）も加わりました。レジスタの中身から補完する`i_CTRL-X_CTRL-R`、キー入力なしに候補を出す`ins-autocompletion`、ソースごとに候補数を絞る`{flag}^<limit>`記法も入っています。

```
" 挿入モード補完をあいまい一致にして、並べ替えを抑える
set completeopt=menu,menuone,fuzzy,nosort

" 現在のバッファから最大5件、ほかのバッファから補完する
set complete=.^5,b
```

`fuzzy`のときの候補収集を制御していた`'completefuzzycollect'`は9.2時点で廃止済みで、設定しても効きません。`complete_info()`が`matches`キーで実際にポップアップへ出ている候補を返すようになった点は、補完プラグインを書く側に効く変更です。

### diffモードのlinematchとdiffanchors

`'diffopt'`の`linematch`は、変更された塊のなかで似ている行同士を並べ直してハイライトの精度を上げます。`'diffanchors'`はバッファ内の指定アドレスをアンカーとしてセクションごとに独立してdiffを取る設定で、`'diffopt'`に`anchor`が含まれるときだけ使われます。既定値も変わり、9.1.0の`internal,filler,closeoff`が9.2では`internal,filler,closeoff,indent-heuristic,inline:char`になりました。vimrcで`diffopt`を明示していない環境では、9.2へ上げた時点でdiffの見え方が変わります。

### Wayland対応（実験的）とXDG Base Directory

WaylandのUIとクリップボードのサポートが入り（`:help wayland`）、ビルド時の`--with-wayland`で有効になります。公式告知は冒頭で「experimental Wayland support」と表現しています。常用環境への導入前には、利用するコンポジタで表示とクリップボードの動作を確認してください。seatを指定する`'wlseat'`、接続タイムアウトの`'wltimeoutlen'`、コンポジタに接続しない起動オプション`-Y`が追加されました。9.2で入ったフォーカスを奪う`'wlsteal'`は、不具合が多いとして開発版で削除されています。

XDG対応では、Unix系で`$HOME/.config/vim/vimrc`が読まれるようになり、個人用ランタイムディレクトリを`$MYVIMDIR`で参照できます。ただし`:help xdg-vimrc`のとおり、XDG側が読まれるのは`$HOME`と`$HOME/.vim`に初期化ファイルが無いときだけです。

### tabpanel・Windows GUI・既定値の変更

横並びの`'tabline'`を縦置きにした`tabpanel`が追加されました。表示内容は`'tabpanel'`に`'statusline'`と同じ書式で書き、配置と幅は`'tabpanelopt'`の`align`・`columns`（既定20）で指定します。Windows版GUIには、メニューとタイトルバーのダークモード（`'guioptions'`の`d`）、Windows 11のタイトルバー装飾（`C`）、全画面表示（`s`）が入りました。GTK版の既定フォントサイズは10ptから12ptに上がっています。

見落としやすいのが、`defaults.vim`にあった値の組み込み既定値への移動です。Vim 9.2.1217を`vim -u NONE -N`（vimrcもdefaults.vimも読まない起動）で起動して値を読み出すと、次のようになりました。

| オプション         | 9.1.0の既定 | 9.2の既定（実測）       |
| ------------- | -------- | ---------------- |
| history       | 50       | 200              |
| backspace     | 空        | indent,eol,start |
| showcmd       | Unixではオフ | オン               |
| ruler         | オフ       | オン               |
| commentstring | /\*%s\*/ | /\* %s \*/       |

表のうちhistory・backspace・showcmd・rulerの新しい既定値はnocompatible時に適用されますが、commentstringの既定値はcompatible時も同じです。`-N`を付けない`vim -u NONE`はcompatibleモードになり、同じビルドでも`history`は0、`backspace`は空、`showcmd`と`ruler`はオフでした。CIやDockerで最小構成のVimを使っている場合は、版差を受けないようvimrcで値を明示しておくのが確実です。

## Vim 9.0から9.3開発版までのリリース履歴とパッチ番号

Vimはメジャー版をまとめて開発するのではなく、日々のパッチを積み上げてある時点で版番号を上げます。そのため9.2の新機能はすべて、先に9.1のパッチとして配布されていました。

| バージョン        | 公開日        | この版までに積んだパッチ                |
| ------------ | ---------- | --------------------------- |
| Vim 9.0      | 2022年6月28日 | 8.2系のパッチ                    |
| Vim 9.1      | 2024年1月2日  | 9.0.0001〜9.0.2190           |
| Vim 9.2      | 2026年2月14日 | 9.1.0001〜9.1.2148           |
| Vim 9.3（開発中） | 未定         | 9.2.0001〜9.2.1224（10月22日時点） |

### 9.2の主要機能を入れたパッチ番号

`runtime/doc/version9.txt`のパッチ一覧から、機能を導入した最初のパッチを拾いました。この番号はそのまま後述の`has()`判定に使えます。

| 機能                       | 導入パッチ    |
| ------------------------ | -------- |
| Wayland UI               | 9.1.0064 |
| 列挙型（enum）                | 9.1.0219 |
| 補完のファジーマッチ               | 9.1.0463 |
| $MYVIMDIR（XDG対応）         | 9.1.0718 |
| 対話型の :Tutor              | 9.1.0836 |
| diffのlinematch           | 9.1.1009 |
| タプル型（Tuple）              | 9.1.1232 |
| tabpanel                 | 9.1.1391 |
| レジスタ補完（CTRL-X CTRL-R）    | 9.1.1408 |
| diffanchors              | 9.1.1557 |
| ジェネリック関数                 | 9.1.1577 |
| 自動補完（ins-autocompletion） | 9.1.1590 |

対話型の`:Tutor`は、パッチ9.1.0836の説明に「Port and include the interactive vimtutor plugin from Neovim」とあるとおり、Neovimのプラグインを移植したものです。

### 開発中のVim 9.3に入っている変更

`version9.txt`には`version-9.3`節が「work in progress」として既にあり、9.2.xのパッチで入った変更が積まれています。公開日は決まっていません。目立つものは次のとおりです。

- GTK 4 GUIの実験的サポート（9.2.0501以降・`--enable-gui=gtk4`）とGTKの全画面表示
- ポップアップの透過と画像表示（cairo・GDI・kitty・sixel）
- デバッグアダプタープロトコル用の`dap`チャネル、複数行のステータスライン（`'statuslineopt'`）、ウィンドウごとのハイライト置換（`'winhighlight'`）
- `:mksession`が出力するセッションファイルがVim9 scriptになる
- NeXTStep対応の削除（9.2.0122）と、後述の`'modelinestrict'`

9.3の項目でも、パッチが入ったビルドなら版番号9.2のまま使えます。版番号ではなくパッチ番号で追う必要があるのは、9.2のときと同じです。

## 9.2公開後のセキュリティ修正とmodelinestrictの挙動

公式リポジトリの[セキュリティ勧告](https://github.com/vim/vim/security/advisories)は、9.2公開日の2026年2月14日から10月22日までに52件出ています（high 2件・medium 45件・low 5件）。直近では10月15日に、Rustの`:make`でディレクトリ名からExコマンドを注入できる問題が9.2.1201で修正されました。中身の大半は「細工したファイルやディレクトリを開いた・補完した・`:make`した時点でコマンドが走る」型で、パッチを追う理由はここにあります。

### モードライン経由の高深刻度脆弱性2件と修正パッチ

| CVE            | 影響する版                            | 修正パッチ    | 入口               |
| -------------- | -------------------------------- | -------- | ---------------- |
| CVE-2026-34714 | 9.1.1391以上・9.2.0272未満（+tabpanel） | 9.2.0272 | tabpanelのモードライン  |
| CVE-2026-34982 | 9.2.0276未満                       | 9.2.0276 | complete等のモードライン |

CVE-2026-34714は、`'tabpanel'`オプションに式を含むオプションの印（`P_MLE`）が付いておらず、`'modelineexpr'`がオフでもモードラインから式を入れられた問題です。勧告は「This vulnerability has been introduced with Vim v9.1.1391」と書いており、tabpanelを入れたパッチそのものが入口でした。CVE-2026-34982は`'complete'`の`F{func}`指定などから同じ経路で抜けられた問題です。どちらもCVSS 8.2で、詳細は[GHSA-2gmj-rpqf-pxvh](https://github.com/vim/vim/security/advisories/GHSA-2gmj-rpqf-pxvh)と[GHSA-8h6p-m6gr-mpw9](https://github.com/vim/vim/security/advisories/GHSA-8h6p-m6gr-mpw9)に記載されています。

### modelinestrictの許可リスト21項目と例外

オプションに印を付けて回る修正では穴が尽きないため、9.2.0350（2026年4月14日）でモードラインの許可リスト方式が入りました。`:help 'modelinestrict'`によれば既定はオンで、許可されるのは`autoindent`・`cindent`・`commentstring`・`expandtab`・`filetype`・`foldcolumn`・`foldenable`・`foldmarker`・`foldmethod`・`modifiable`・`readonly`・`rightleft`・`shiftwidth`・`smartindent`・`softtabstop`・`spell`・`spelllang`・`tabstop`・`textwidth`・`varsofttabstop`・`vartabstop`の21個です。許可リスト外の設定は原則としてエラーを出さずに無視されます。ただし、モードライン内の`set nomodeline`は例外として受け付けられ、以後のモードライン処理を止めます。

末尾に`# vim: set ts=4 sw=4 nu list textwidth=60 :`と書いたファイルを、Vim 9.2.1217で開いて値を読み出した結果が次の表です。

| 設定                 | tabstop | shiftwidth | textwidth | number | list |
| ------------------ | ------- | ---------- | --------- | ------ | ---- |
| modelinestrict（既定） | 4       | 4          | 60        | 0      | 0    |
| nomodelinestrict   | 4       | 4          | 60        | 1      | 1    |

チームのリポジトリでモードラインに`number`や`wrap`、`fileencoding`を書いている場合、パッチを上げた日から黙って効かなくなります。エラーが出ないので気付きにくいところです。`nomodelinestrict`で許可リストによる制限を解除できますが、防御範囲が狭まるため勧めません（9.2.0272と9.2.0276で修正済みの2件が、この設定だけで再発するわけではありません）。文字コードなどEditorConfigが対応する設定は`.editorconfig`（Vim 9.1以降は同梱の`packadd editorconfig`で読めます）かftpluginへ移すのが筋です。なお`'modelinestrict'`は9.2.xのパッチで入ったため、ヘルプでは`changed-9.3`の側に載っています。

### Ubuntuのセキュリティ修正とパッケージリビジョン

Ubuntu 26.04 LTSのvimは9.1.2141のままですが、[パッケージの変更履歴](https://changelogs.ubuntu.com/changelogs/pool/main/v/vim/vim%5F9.1.2141-1ubuntu4.9/changelog)にはCVE-2026-34714とCVE-2026-34982の修正パッチが入っており、2026年9月8日公開の`9.1.2141-1ubuntu4.9`まで修正が続いています。9.1.2141はtabpanelの脆弱性が入った範囲（9.1.1391以降）にありますが、修正はパッケージ側で塞がれています。ディストリ版の安全性は上流の版番号でなく、パッケージのリビジョンとセキュリティ更新の有無で判断します。一方、`'modelinestrict'`のような新しいオプションはバックポートの対象外になりやすいので、`exists('+modelinestrict')`で手元のビルドにあるかを確かめてください。

## インストール済みVimのバージョン確認とパッチ単位の機能判定

### :version と v:version・v:versionlong の読み方

シェルからは`vim --version`、Vimのなかからは`:version`で確認します。先頭に版番号と公開日、`Included patches:`の行に適用済みパッチの範囲が出ます。パッチ欄の行番号は環境によって異なります。日本語環境では「適用済パッチ」と表示されます。

```
$ vim --version | head -3
VIM - Vi IMproved 9.2 (2026 Feb 14, compiled Oct 22 2026 00:07:04)
macOS version - x86_64
Included patches: 1-1217
```

スクリプトでは`v:version`と`v:versionlong`を使えます。`v:version`はメジャー版の100倍にマイナー版を足した整数で、9.2なら902です。`v:versionlong`は末尾4桁にパッチ番号を含み、9.2.1217なら9021217になります。

### パッチ番号による判定とビルド機能による判定の使い分け

版番号だけで機能の有無を判定すると取りこぼします。9.2の新機能は9.1のパッチとして配布済みなので、版番号が9.1のビルドでも該当パッチを含んでいれば使えるからです。判定の書き方は2種類あり、役割が違います。

1つ目の`has('patch-9.1.1232')`は、**その機能を入れたパッチがソースに入っているか**を見ます。`:help feature-list`には「The “patch-7.4.248” feature means that the Vim version is 7.5 or later, or it is version 7.4 and patch 248 was included.」とあり、より新しい版なら常に真を返します。2つ目の`has('tabpanel')`や`exists('+tabpanel')`は、**そのビルドに機能が組み込まれているか**を見ます。次のスクリプトを`vim --clean -es -S chk.vim`で実行すると、両方の結果をファイルに書き出せます。

```
let s = []
call add(s, 'v:versionlong=' . v:versionlong)
call add(s, 'patch-9.1.1232=' . has('patch-9.1.1232'))
call add(s, 'patch-9.1.1391=' . has('patch-9.1.1391'))
call add(s, 'has(tabpanel)=' . has('tabpanel'))
call add(s, 'patch-9.2.0350=' . has('patch-9.2.0350'))
call add(s, 'exists(+modelinestrict)=' . exists('+modelinestrict'))
call writefile(s, 'vimchk.txt')
qa!
```

macOSに同梱のVim（9.1・パッチ1-1752・Normal版）と、ソースからhuge構成でビルドしたVim 9.2.1217で実行した結果です。

| 判定                              | macOS同梱 9.1.1752 | 9.2.1217 huge |
| ------------------------------- | ---------------- | ------------- |
| v:versionlong                   | 9011752          | 9021217       |
| has(‘patch-9.1.1232’)（Tuple）    | 1                | 1             |
| has(‘patch-9.1.1391’)（tabpanel） | 1                | 1             |
| has(‘tabpanel’)                 | 0                | 1             |
| has(‘patch-9.2.0350’)           | 0                | 1             |
| exists(‘+modelinestrict’)       | 0                | 1             |

macOS同梱版は版番号が9.1でも、タプル型とtabpanelのパッチは入っています。それでも`has('tabpanel')`は0です。`src/feature.h`で`FEAT_TABPANEL`が`FEAT_HUGE`のときだけ定義されるため、Normal版には機能が組み込まれていません。**パッチ番号はソースに入ったかどうか、機能名はビルドに入ったかどうか**を示します。

```
vim9script

# 誤り: 9.1 系のパッチ入りビルドで機能を取りこぼす
if v:version >= 902
  set completeopt+=fuzzy
endif

# 補完のfuzzy設定を導入パッチ番号で判定する
if has('patch-9.1.0463')
  set completeopt+=fuzzy
endif

# ビルドに依存する機能は機能名で判定する
if has('tabpanel')
  set tabpanelopt=columns:24
endif
```

`v:versionlong`の大小比較は、ディストリが古い版へ修正を取り込んで番号が飛ぶ場合に正しく動きません。`:help v:versionlong`自身が「if there are gaps in the list of patches included this will not work well」と書いており、`has()`を使うよう案内しています。

## 環境別のインストール・アップデート手順

### 配布元ごとのVimのバージョン

2026年10月22日時点で各配布元が公表している版です。ディストリはパッケージリビジョン（`2:9.1.2141-1ubuntu4.9`など）が付くため、上流のバージョン部分だけを並べています。

| 配布元                        | バージョン    | 更新の仕方         |
| -------------------------- | -------- | ------------- |
| Ubuntu 26.04 LTS（Resolute） | 9.1.2141 | 版を固定し修正だけ取り込む |
| Ubuntu 24.04 LTS（Noble）    | 9.1.0016 | 版を固定し修正だけ取り込む |
| Debian trixie              | 9.1.1230 | 版を固定し修正だけ取り込む |
| Debian forky / sid         | 9.2.0858 | 上流の版を取り込む     |
| Fedora 43 / 44             | 9.2.1202 | 上流の版を取り込む     |
| Arch Linux                 | 9.2.1178 | 上流の版を取り込む     |
| Homebrew（macOS）            | 9.2.1200 | 上流の版を取り込む     |
| winget（vim.vim）            | 9.2.1186 | 上流の版を取り込む     |
| vim-win32-installer        | 9.2.1217 | 公式のビルド        |

Ubuntu 26.04 LTSの9.1.2141は、9.2として区切られた9.1.2148の7パッチ手前です。版番号は9.1でも、列挙型・タプル型・ジェネリック関数・Wayland対応は入っています。24.04 LTSの9.1.0016は9.2の新機能をほぼ含みません。上流の版を取り込む配布元では、版番号がそのまま修正の有無を示します。10月15日の修正（9.2.1201）を版番号の上で含むのはFedoraとvim-win32-installerで、Arch・Homebrew・wingetは次の更新待ちです。

```
# 新規導入
$ sudo apt install vim
# 導入済みの更新
$ sudo apt update && sudo apt install --only-upgrade vim
$ dpkg -s vim | grep ^Version
```

Ubuntu向けに9.2系を継続配布している公式のPPAはありません。検索で出てくる`ppa:jonathonf/vim`は9.0.0749（2022年10月）で更新が止まっているので使わないでください。標準リポジトリより新しい版が要るならソースビルドです。

### macOSとWindowsの更新コマンド

今回検証したmacOS同梱のVim 9.1.1752はNormal版で、`+tabpanel`も`'modelinestrict'`もありません。必要な機能が`has()`で0を返すならHomebrew版へ入れ替えます。Windowsでgvimを含む一式が要るなら、wingetかvim-win32-installerの配布物です。wingetへの登録は[vim-win32-installerのリリース](https://github.com/vim/vim-win32-installer/releases)より遅れます。[winget-pkgsのマニフェスト](https://github.com/microsoft/winget-pkgs/tree/master/manifests/v/vim/vim)では、2026年10月22日時点で安定版の`vim.vim`も`vim.vim.nightly`も9.2.1186（10月14日登録）です。最新パッチが要るならインストーラを直接使います。

```
# Homebrew版を初めて入れる場合
$ brew install vim
# Homebrew版を導入済みの場合
$ brew upgrade vim
$ brew info vim | head -3

C:\> winget install --id vim.vim -e
C:\> winget upgrade vim.vim
```

### ソースからのビルドとWayland対応の確認

Wayland対応やGUIの有無はビルド時に決まります。ディストリのパッケージがWaylandを有効にしていなければ`has('wayland')`は0です。ソースからビルドする場合は、GTK3とWaylandの開発パッケージ（Debian系なら`libgtk-3-dev`と`libwayland-dev`）を先に入れておきます。

```
$ git clone --depth 1 https://github.com/vim/vim.git
$ cd vim/src
$ ./configure --with-features=huge --enable-gui=gtk3 --with-wayland
$ make && sudo make install
$ vim --version | grep -o -w -E '[+-](wayland|tabpanel|diff)'
```

`--with-features=huge`は落とさないでください。`FEAT_TABPANEL`と`FEAT_VARTABS`はhuge限定で、normalでは`+tabpanel`が入りません。`+diff`と`+textprop`はnormalでも有効です。ソースビルドに移るとディストリのセキュリティ更新から外れるので、以後はパッチを自分で追い続ける前提になります。

## 9.2へ上げる前に確認すべき点と、急がなくてよい場面

`:help incompatible-9.2`に載っている非互換な変更は「Improved/Different MS-Windows mapping support」の1項目だけです。ただし非互換の節に載らない挙動変更が`:help changed-9.2`と、9.2.x以降は`changed-9.3`に並ぶため、既存のvimrcが無修正で同じように動くとまでは言えません。上げる前に確認するのは次の3つです。

- **既定値の移動**：`history`・`backspace`・`showcmd`・`ruler`・`diffopt`。最小構成で挙動が変わるので、CIやDockerではvimrcで明示する。
- **モードラインの制限**：9.2.0350以降、許可リスト外のオプションは黙って無視される。リポジトリのモードラインを`grep -rn 'vim:'`で洗い出しておく。
- **Windowsの実行ファイル検索**：外部コマンドの実行時にカレントディレクトリを検索しなくなった。`:help executable()`のとおりVimは`$NoDefaultCurrentDirectoryInExePath`を常に設定するので、この変数で従来動作には戻せない。バッチやMakefileで相対パスか絶対パスを前置する。

急がなくてよい場面もはっきりしています。Ubuntu 26.04 LTSのように9.1.2141が入っていて`has()`で必要な機能が真を返す環境で、版番号を9.2に揃えるためだけにソースビルドへ移るのは損です。ディストリのセキュリティ更新から外れる代償のほうが大きくなります。逆に、Homebrew・winget・ソースビルドのように上流の版をそのまま使う環境では、9.2という版番号ではなく最新パッチに追従することが脆弱性対策そのものです。

内蔵LSPやLuaのプラグイン資産を前提にしたいなら、Vimの版を上げるよりNeovimへの移行が近道です。判断材料は[Neovim 0.12系への移行手順：vim.packと内蔵LSP・自動補完の実装【0.12.6対応】](/tech/details/17440/)にまとめています。Vim本体の基本操作から確認したい場合は[Vimとは｜テキストエディタの使い方・基本コマンドと他エディタとの違い](/tech/details/4840/)を参照してください。

## よくある質問

### Vimの最新バージョンはいくつですか？

区切りの付いた版はVim 9.2（2026年2月14日公開）です。パッチは日々積まれており、2026年10月22日時点の最新は9.2.1224です。最新のパッチ番号は公式リポジトリのタグ一覧で確認できます。

### Vim 9.3はいつ公開されますか？

公開日は発表されていません。`version9.txt`には`version-9.3`節が「work in progress」として存在し、GTK 4 GUIの実験的サポートやポップアップの透過などが9.2.xのパッチで入っています。過去の間隔は9.0から9.1が1年半、9.1から9.2が2年1か月でした。

### Windowsでgvim 9.2を入れるにはどうすればよいですか？

公式のvim-win32-installerが配布するインストーラか、wingetの`vim.vim`パッケージで入ります。wingetへの登録はインストーラの公開より遅れ、2026年10月22日時点でwingetは9.2.1186、vim-win32-installerは9.2.1217です。最新パッチが要るならインストーラを直接使います。

### Vim 9.2で設定ファイルの置き場所は変わりますか？

Unix系では`$XDG_CONFIG_HOME/vim/vimrc`（既定は`~/.config/vim/vimrc`）も読まれるようになりました。ただし`~/.vimrc`や`~/.vim/vimrc`がある環境ではそちらが優先されるため、XDG側へ移すには既存のファイルを退避します。XDG側が使われると`'runtimepath'`と`'packpath'`も`~/.config/vim`基準に組み替わります。

### Vim 9.2とNeovimのどちらを選ぶべきですか？

設定言語がVim9 scriptで完結し、SSH越しの編集環境を標準パッケージで確保したいならVim 9.2です。内蔵LSPやTreesitter、Luaのプラグイン資産を前提にするならNeovimが向いています。Neovim側の基本操作は[Neovim（nvim）の使い方｜基本操作・init.lua設定・プラグイン・LSP【0.12.6対応】](/tech/details/5870/)で扱っています。

## 関連記事

- [Vimとは｜テキストエディタの使い方・基本コマンドと他エディタとの違い](/tech/details/4840/)
- [Neovim 0.12系への移行手順：vim.packと内蔵LSP・自動補完の実装【0.12.6対応】](/tech/details/17440/)
- [Neovim（nvim）の使い方｜基本操作・init.lua設定・プラグイン・LSP【0.12.6対応】](/tech/details/5870/)
- [denops.vimとは｜Deno 2でVim/Neovimプラグインを書く仕組みと導入・開発手順【v8対応】](/tech/details/12611/)

---

出典: [Vim 9.2の新機能と最新バージョン確認・更新手順｜Enum・Tuple・Wayland対応とパッチ判定](<https://www.issoh.co.jp/tech/details/11043/>)（株式会社一創）
