zudo-codemirror

Type to search...

to open search from anywhere

Ex コマンド

作成2026年3月29日更新2026年3月29日Takeshi Takatsudo

@replit/codemirror-vim の Ex コマンドラインモードのリファレンスとカスタムコマンドの定義方法。

Ex コマンド

Ex コマンドは Normal モードで : を押すことで入力します。エディターの下部にコマンドラインプロンプトが表示され、コマンドを入力して Enter で実行します。

組み込み Ex コマンド

ファイルとバッファのコマンド

コマンド説明
:w書き込み(保存)。有用な動作を行うにはカスタムハンドラーが必要 — 後述。
:q終了。カスタムハンドラーが必要。
:wq書き込みして終了
:e {file}ファイルを編集(ブラウザ環境では制限あり)

📝 Note

:w:q はブラウザエディターでは組み込みの動作がありません。Vim.defineEx() でカスタムハンドラーを定義して、アプリケーションの保存・終了ロジックに接続する必要があります。

キーマッピングコマンド

コマンド説明
:map {lhs} {rhs}キーマッピングを作成(全モード)
:nmap {lhs} {rhs}Normal モードのマッピング
:imap {lhs} {rhs}Insert モードのマッピング
:vmap {lhs} {rhs}Visual モードのマッピング
:noremap {lhs} {rhs}非再帰マッピング(全モード)
:nnoremap {lhs} {rhs}Normal モードの非再帰マッピング
:inoremap {lhs} {rhs}Insert モードの非再帰マッピング
:vnoremap {lhs} {rhs}Visual モードの非再帰マッピング
:unmap {lhs}マッピングを削除(全モード)
:nunmap {lhs}Normal モードのマッピングを削除
:iunmap {lhs}Insert モードのマッピングを削除
:vunmap {lhs}Visual モードのマッピングを削除

Set コマンド

コマンド説明
:set number行番号を表示
:set nonumber行番号を非表示
:set wrap行の折り返しを有効化(カスタムオプションの定義が必要 — Vim オプションを参照)
:set nowrap行の折り返しを無効化

テキスト操作コマンド

コマンド説明
:sort選択範囲またはバッファ全体の行をソート
:s/pattern/replacement/flags現在の行で置換
:%s/pattern/replacement/flagsバッファ全体で置換
:g/pattern/commandパターンにマッチする行でコマンドを実行

置換フラグ

フラグ説明
g各行の全出現箇所を置換(最初の1つだけではなく)
i大文字小文字を区別しないマッチング
c各置換を確認

置換の例

:s/foo/bar/          substitute first 'foo' with 'bar' on current line
:s/foo/bar/g         substitute all 'foo' with 'bar' on current line
:%s/foo/bar/g        substitute all 'foo' with 'bar' in entire buffer
:%s/foo/bar/gi       case-insensitive substitute in entire buffer
:5,10s/foo/bar/g     substitute in lines 5 through 10

global コマンドの例

:g/TODO/d            delete all lines containing 'TODO'
:g/^$/d              delete all blank lines
:g/pattern/normal dd delete lines matching pattern using normal mode command

情報コマンド

コマンド説明
:marks現在のマークの一覧を表示
:registersレジスタの内容を表示

カスタム Ex コマンドの定義

Vim.defineEx() を使って Ex コマンドのハンドラーを登録します。これにより :w:q などのコマンドをアプリケーション内で機能させることができます。

import { Vim } from "@replit/codemirror-vim";

Vim.defineEx() のシグネチャ

Vim.defineEx(name: string, prefix: string, handler: (cm: any, params: any) => void): void
  • name — 完全なコマンド名(例: "write"
  • prefix — 短縮エイリアス(例: "w"
  • handler — 実行する関数。CodeMirror アダプターインスタンスとパラメータオブジェクトを受け取ります。

(書き込み/保存)の実装

Vim.defineEx("write", "w", function (cm, params) {
  // Your save logic here
  const content = cm.getValue();
  saveToServer(content);
});

(終了)の実装

Vim.defineEx("quit", "q", function (cm, params) {
  // Your close/quit logic here
  closeEditor();
});

(書き込みして終了)の実装

Vim.defineEx("wquit", "wq", function (cm, params) {
  const content = cm.getValue();
  saveToServer(content).then(() => {
    closeEditor();
  });
});

引数を受け取るカスタムコマンド

params オブジェクトからコマンドライン引数にアクセスできます。

Vim.defineEx("theme", "theme", function (cm, params) {
  const themeName = params.args?.[0];
  if (themeName) {
    applyTheme(themeName);
  }
});

これにより、Vim コマンドラインから :theme dark:theme light を実行できます。

範囲を受け取るカスタムコマンド

行範囲を操作する Ex コマンドは、params で範囲情報を受け取ります。

Vim.defineEx("upper", "upper", function (cm, params) {
  const { line: start } = params.line ?? { line: 0 };
  const { line: end } = params.lineEnd ?? { line: cm.lineCount() - 1 };
  // Operate on lines start through end
});

Revision History