← Vim研究所

Vimのコマンドラインウインドウの使い方(q: / q/)

2019-11-17 公開 ・ 更新: 2026-08-20

長いExコマンドを打ち間違えて最初からやり直した経験は誰にでもあるはずです。コマンドラインウインドウを使えば、過去に実行したコマンドや検索を「ノーマルモードの操作感」で編集して再実行できます。

目次(10項目)
キーこれだけ覚える
q:Exコマンドの履歴を編集
q/ / q?検索履歴を編集
Ctrl-fコマンドライン入力中に履歴ウインドウを開く
Enterカーソル行のコマンドを実行して閉じる

開き方

q:

または、コマンドラインに入った状態でCtrl-fを押す方法もあります。入力中の長いコマンドにタイプミスを見つけたときに使うと効果的です。

BEFORE
:%s/gerp/grep/g
Ctrl-f
AFTER
:%s/foo/bar/g
:g/TODO/d
:%s/gerp/grep/g

1行だった入力欄が、過去の履歴を含む複数行のバッファに変わります。カーソルは入力していた行の末尾に残るので、そこからbhで打ち間違えた箇所まで戻って直接修正できます。バックスペースで消して打ち直す必要がありません。

種類によって開くウインドウの履歴が変わります。

要点:普段のコマンド履歴ならq:、検索履歴を編集したいならq/を使います。開いたら通常のノーマルモード操作がそのまま使えます。
q:でコマンドラインウインドウを開いた画面。下部に別のウインドウが開き、過去に実行した3つのExコマンドが行として並んでいる
Vim 9.1.1752。q: で開いたコマンドラインウインドウ。履歴が普通のバッファとして並ぶ

何が表示され、何ができるのか

コマンドラインウインドウには過去のコマンド・検索の履歴が一覧表示され、次の操作ができます。

普通のコマンドラインは1行の入力欄にすぎませんが、コマンドラインウインドウはバッファとして扱われるため、複数行にまたがる編集や、ヤンク・削除といった通常の編集コマンドがそのまま使えます。ヤンクしたコマンドを他のバッファに貼り付ければ、設定ファイルへそのまま転記することもできます。

ウインドウの高さを指定して開く

デフォルトの高さで足りない場合は、数値を前置して開く高さを指定できます。

10q:

履歴の件数が多いプロジェクトでは、あらかじめ広めの高さで開いておくと一覧性が上がって探しやすくなります。開いた後にCtrl-w +で高さを後から調整することもできます。

活用場面

特に効果を発揮するのは次のような場面です。

ありがちな事故

コマンドラインウインドウを終了しようとして:qと打つつもりが、間違えて別の行にカーソルがある状態でEnterを押してしまい、意図しないコマンドが実行される、という事故が起きがちです。行を移動した直後は、実行前に何にカーソルがあるか確認する癖をつけておくと安心です。心配な場合はCtrl-cEscで一旦キャンセルしてから:qと入力し直す方が安全です。

使ってみて

複雑な:%s置換コマンドを何度も微調整しながら試すとき、コマンドラインウインドウを開いて履歴から呼び出し、一部だけ書き換えて再実行する使い方が定着しています。1行入力の矢印キーで履歴をたどるより、バッファとして編集できるほうが複雑な修正には向いていると感じます。

開いている間はできないこと

コマンドラインウィンドウを開いている間は、他のウィンドウへ移動できません。Ctrl-w を押しても効かないので、開いたまま別のファイルを見ることはできない仕様です。

参照しながらコマンドを組み立てたいときは、先に必要な文字列をレジスタに入れておき、ウィンドウの中で Ctrl-r で貼り付けます。カーソル下の単語なら Ctrl-r Ctrl-w でも入ります。

抜けるには :qCtrl-c です。Ctrl-c なら実行せずにコマンドラインへ戻るので、間違って開いたときはこちらのほうが安全です。

入力の途中から開く

長いコマンドを打っている最中に打ち間違いを見つけたとき、Backspace で戻すより、そのままウィンドウに移したほうが速く直せます。コマンドラインで Ctrl-f を押すと、打ちかけの内容がそのまま入った状態でウィンドウが開きます。

あとは通常の編集操作で直せます。ciw で単語を書き換える、f で目的の文字へ飛ぶ、といったキーがそのまま使えるので、長い置換コマンドほど効きます。Enter で実行です。

履歴の量を増やしておく

過去のコマンドをどれだけ覚えているかは history オプションで決まります。既定は50件で、複雑なコマンドを組み立てながら作業していると案外すぐ流れます。

set history=1000
:set history?

履歴はVimを閉じても viminfo(Neovimでは shada)に保存されるので、昨日打ったコマンドを今日呼び戻せます。保存する件数はそちらの設定にも上限があるので、両方を増やしておくと確実です。検索の履歴を扱う q/ も同じ仕組みで動いています。

まとめ

コマンドラインウインドウはq:/q/で開ける、履歴をバッファとして編集・再実行できる機能です。長いコマンドの微調整や検索パターンの修正が頻繁にあるなら、覚えておく価値があります。ここで編集しているのはExコマンドの履歴です。シェルのコマンドを打ちたい場合は:!:terminalのほうで、コマンドラインウインドウとは別の仕組みになります。

関連記事

← Vim研究所 トップへ戻る