コマンドライン

Nvim :help ページは、ソースからtree-sitter-vimdocパーサーを使用して生成されています。


コマンドラインモードは、Exコマンド(":")、検索パターン("/" および "?" )、およびフィルターコマンド("!") を入力するために使用されます。
基本的なコマンドライン編集については、ユーザーマニュアルの第20章 usr_20.txt で説明されています。

1. コマンドライン編集 コマンドライン編集

通常、文字はカーソル位置の前に挿入されます。左右のカーソルキーでコマンドライン内を移動できます。 <Insert>キーを使用して、文字の挿入と上書きを切り替えることができます。
キーボードにカーソルキーやその他の特殊キーが機能しない場合は、":cnoremap" を使用して別のキーを定義できます。たとえば、tcshスタイルの編集キーを定義するには、次のようにします:tcshスタイル
:cnoremap <C-A> <Home>
:cnoremap <C-F> <Right>
:cnoremap <C-B> <Left>
:cnoremap <Esc>b <S-Left>
:cnoremap <Esc>f <S-Right>
(<> 記法 <>; すべてそのまま入力してください)
コマンドラインが長すぎる
コマンドラインが画面に収まらないほど長くなると、収まる部分だけが表示されます。カーソルはこの表示部分でのみ移動できるため、それ以降は編集できません。
コマンドライン履歴 履歴 入力したコマンドラインは履歴テーブルに記憶されます。上下のカーソルキーで呼び出すことができます。実際には5つの履歴テーブルがあります
':' コマンド用
検索文字列用
式用
input() 関数に入力された入力行用。
デバッグモードコマンド用 これらは完全に分かれています。各履歴は、同じタイプの行を入力している場合にのみアクセスできます。 'history' オプションを使用して、記憶される行数を設定します。 **注意:**
古いコマンドとまったく同じコマンドラインを入力すると、古いコマンドは削除されます(繰り返されるコマンドによって古いコマンドが履歴から削除されるのを防ぐため)。
入力されたコマンドのみが記憶されます。マッピングから完全に取得されたコマンドは履歴に保存されません。
"*" や "#" などのコマンドからの検索も含め、すべての検索は検索履歴に保存されます。ただし、マッピングの場合、最後の検索のみが記憶されます(長いマッピングが履歴を破損するのを防ぐため)。
コマンドラインには名前の自動補完機能があります。 コマンドライン補完 を参照してください。
c_CTRL-V
CTRL-V 次の数字以外の文字をそのまま挿入します。最大3桁の数字が1バイトの10進値を形成します。数字以外の文字と3桁の数字は、マッピングの対象とはなりません。これは挿入モードと同じように機能します(上記、i_CTRL-V を参照)。特殊キーの場合、CTRL修飾子がキーに含まれて制御文字が生成される場合があります。キーに対応する制御文字がない場合は、その キー表記 が挿入されます。 **注意:** Windowsでは、CTRL-V は多くの場合、テキストの貼り付けにマップされています。その場合は、代わりに CTRL-Q を使用してください。 c_CTRL-Q
CTRL-Q CTRL-V と同じです。ただし、一部の端末では制御フローに使用されるため、機能しません。

CTRL-SHIFT-V c_CTRL-SHIFT-V c_CTRL-SHIFT-Q

CTRL-SHIFT-Q CTRL-V と同じように機能しますが、CTRL修飾子をキーに含めようとしないでください。
c_<左> c_左 <左> カーソルを左に移動します。ワイルドメニュー補完モード中の動作については、'wildmenu' を参照してください。 c_<右> c_右 <右> カーソルを右に移動します。ワイルドメニュー補完モード中の動作については、'wildmenu' を参照してください。 c_<S-左>
<S-左> または <C-左> c_<C-左>
カーソルを1 WORD 左に移動 c_<S-右>
<S-右> または <C-右> c_<C-右>
カーソルを1 WORD 右に移動 CTRL-B または <Home> c_CTRL-B c_<Home> c_Home カーソルをコマンドラインの先頭に移動 CTRL-E または <End> c_CTRL-E c_<End> c_End カーソルをコマンドラインの末尾に移動します。ワイルドメニュー補完モード中の動作については、'wildmenu' を参照してください。
c_<左マウス>
<左マウス> カーソルをマウスクリックの位置に移動します。
c_<中マウス>
<中マウス> クリップボードの内容を貼り付けます(X11の場合はプライマリセレクション)。これは CTRL-R * を使用する場合と似ていますが、行間にCR文字が挿入されません。

CTRL-H c_<BS> c_CTRL-H c_BS

<BS> カーソルの前の文字を削除します。 c_<Del> c_Del <Del> カーソル位置の文字を削除します(行末:カーソルの前の文字)。 c_CTRL-W
CTRL-W カーソルの前の単語を削除します。これは 'iskeyword' オプションに依存します。 c_CTRL-U
CTRL-U カーソル位置と行頭の間のすべての文字を削除します。以前のバージョンのvimは、行のすべての文字を削除していました。それが望ましい動作である場合は、vimrcに以下を追加してください
:cnoremap <C-U> <C-E><C-U>
c_<Insert> c_Insert <Insert> 挿入と上書きを切り替えます。
{char1} <BS> {char2} または c_ダイグラフ
CTRL-K {char1} {char2} c_CTRL-K
ダイグラフを入力します(ダイグラフ を参照)。 {char1} が特殊キーの場合、そのキーのコードが<>形式で挿入されます。
CTRL-R {レジスタ} c_CTRL-R c_<C-R> 番号付きまたは名前付きレジスタの内容を挿入します。 CTRL-R と2番目の文字を入力する間に '"' が表示され、レジスタの名前を入力する必要があることを示します。テキストは入力したかのように挿入されますが、マッピングと省略形は使用されません。 'wildchar' によるコマンドライン補完はトリガーされません。また、コマンドラインを終了する文字は文字通り挿入されます(<Esc><CR><NL><C-C>)。ただし、<BS> または CTRL-W はコマンドラインを終了する可能性があり、残りの文字は別のモードで解釈されるため、意図したとおりにならない場合があります。特殊レジスタ: '"' 名前なしレジスタ。最後の削除またはヤンクのテキストが含まれています '%' 現在のファイル名 '#' 代替ファイル名 "*" クリップボードの内容(X11:プライマリセレクション) '+' クリップボードの内容 '/' 最後の検索パターン ':' 最後のコマンドライン '-' 最後の小規模(1行未満)削除 '.' 最後に挿入されたテキスト c_CTRL-R_=
'=' 式レジスタ:式を入力するように求められます( を参照)(式プロンプトでは機能しません。副作用を避けるため、バッファや現在のウィンドウの変更などは許可されていません)結果が リスト の場合、アイテムは行として使用されます。内部に改行を含めることもできます。結果が浮動小数点数の場合、自動的に文字列に変換されます。カーソルを移動するだけで何も挿入したくない場合は、式が空の文字列と評価されるようにする必要があります。例えば
<C-R><C-R>=setcmdpos(2)[-1]<CR>
レジスタについては、レジスタ を参照してください。実装の詳細: レジスタを使用し、setcmdpos() を呼び出すと、結果の文字列を挿入する前に位置が設定されます。後で位置を設定するには、CTRL-R CTRL-R を使用します。
CTRL-R CTRL-F c_CTRL-R_CTRL-F c_<C-R>_<C-F> CTRL-R CTRL-P c_CTRL-R_CTRL-P c_<C-R>_<C-P> CTRL-R CTRL-W c_CTRL-R_CTRL-W c_<C-R>_<C-W> CTRL-R CTRL-A c_CTRL-R_CTRL-A c_<C-R>_<C-A> CTRL-R CTRL-L c_CTRL-R_CTRL-L c_<C-R>_<C-L> カーソル位置のオブジェクトを挿入します: CTRL-F カーソル位置のファイル名 CTRL-P カーソル位置のファイル名。gf のように 'path' で展開されます CTRL-W カーソル位置の単語 CTRL-A カーソル位置の WORD。 WORD を参照してください CTRL-L カーソル位置の行
'incsearch' が設定されている場合、現在表示されている一致の末尾のカーソル位置が使用されます。 CTRL-W を使用すると、すでに入力されている単語の部分は再度挿入されません。
c_CTRL-R_CTRL-R c_<C-R>_<C-R> c_CTRL-R_CTRL-O c_<C-R>_<C-O> CTRL-R CTRL-R {レジスタ CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} CTRL-R CTRL-O {レジスタ CTRL-F CTRL-P CTRL-W CTRL-A CTRL-L} カーソル位置のレジスタまたはオブジェクトを挿入します。 c_CTRL-R のように機能しますが、テキストをそのまま挿入します。たとえば、レジスタaに "xy^Hz"(^Hはバックスペース)が含まれている場合、"CTRL-R a" は "xz" を挿入しますが、"CTRL-R CTRL-R a" は "xy^Hz" を挿入します。
CTRL-\ e {expr} c_CTRL-\_e
{expr} を評価し、コマンドライン全体を結果に置き換えます。式を入力するように求められます。終了するには <Enter> を入力します。ただし、マッピングで最も役立ちます。 を参照してください。式の結果を挿入するには、c_CTRL-R_= を参照してください。便利な関数は getcmdtype()getcmdline()getcmdpos() です。カーソル位置は変更されません。ただし、カーソルが行末にあった場合は、行末に留まります。 setcmdpos() を使用してカーソル位置を設定できます。厄介な副作用を避けるため、サンドボックス を使用して式を評価します。例
:cmap <F7> <C-\>eAppendSome()<CR>
:func AppendSome()
   :let cmd = getcmdline() .. " Some()"
   :" place the cursor on the )
   :call setcmdpos(strlen(cmd))
   :return cmd
:endfunc
これは再帰的には機能しないため、すでに式を編集している場合は機能しません。ただし、マッピングで使用することは可能です。
c_CTRL-Y
CTRL-Y モードレス選択がある場合、選択範囲をクリップボードにコピーします。選択範囲がない場合、CTRL-Y は文字として挿入されます。ワイルドメニュー補完モード中の動作については、'wildmenu' を参照してください。
c_CTRL-Z
CTRL-Z 'wildmode' をトリガーします。 'wildcharm' と同じですが、常に使用できます。
CTRL-M または CTRL-J c_CTRL-M c_CTRL-J c_<NL> c_<CR> c_CR <CR> または <NL> 入力されたコマンドを実行開始
CTRL-[ c_CTRL-[ c_<Esc> c_Esc <Esc> 入力後、'x' が 'cpoptions' に存在しない場合、コマンドラインモードを終了し、実行しません。マクロ内、または 'x' が 'cpoptions' に存在する場合、入力されたコマンドを実行開始します。 注意: キーボードの <Esc> キーが押しにくい場合は、CTRL-[ を使用するようにしましょう。 c_META c_ALT ALT (META) は、コードがマップされていない場合、<Esc> のように動作することがあります。たとえば、<A-x> がコマンドラインモードのマッピングを持たない場合、<A-x><Esc>x のように動作します。 c_CTRL-C
CTRL-C コマンドラインを終了し、実行しません
c_<Up> c_Up <Up> 現在の コマンドラインの先頭と一致する、履歴の古いコマンドラインを呼び出します(下記参照)。ワイルドメニュー補完モード中の動作については、'wildmenu' を参照してください。 c_<Down> c_Down <Down> 現在の コマンドラインの先頭と一致する、履歴の新しいコマンドラインを呼び出します(下記参照)。ワイルドメニュー補完モード中の動作については、'wildmenu' を参照してください。
c_<S-Up> c_<PageUp> <S-Up> または <PageUp> 履歴の古いコマンドラインを呼び出します c_<S-Down> c_<PageDown> <S-Down> または <PageDown> 履歴の新しいコマンドラインを呼び出します
CTRL-D コマンドライン補完(cmdline-completion 参照) 'wildchar' オプション コマンドライン補完(cmdline-completion 参照) CTRL-N コマンドライン補完(cmdline-completion 参照) CTRL-P コマンドライン補完(cmdline-completion 参照) CTRL-A コマンドライン補完(cmdline-completion 参照) CTRL-L コマンドライン補完(cmdline-completion 参照)
c_CTRL-^
CTRL-^ 言語 :lmap マッピングや入力メソッドの使用を切り替えます。検索コマンドのパターンを入力していて、'imsearch' が -1 でない場合、VAL は 'imsearch' の値です。そうでない場合、VAL は 'iminsert' の値です。言語マッピングが定義されている場合
VAL が 1(langmap マッピングを使用)の場合、0(langmap マッピングを使用しない)になります。
VAL が 1 でない場合、1 になり、langmap マッピングが有効になります。言語マッピングが定義されていない場合
VAL が 2(入力メソッドを使用)の場合、0(入力メソッドを使用しない)になります。
VAL が他の値の場合、2 になり、入力メソッドが有効になります。これらの言語マッピングは通常、キーボードで生成される文字とは異なる文字を入力するために使用されます。 'keymap' オプションを使用して、多数の言語マッピングをインストールできます。コマンドラインを入力する場合、コマンドを入力することが想定されているため、langmap マッピングは無効になります。 CTRL-^ で有効にした後、新しい状態は次のコマンドまたは検索パターンには再び使用されません。
c_CTRL-]
CTRL-] 文字を挿入せずに、略語をトリガーします。
コマンドラインでの Emacs スタイルの編集については、emacs-keys を参照してください。
<Up> キーと <Down> キーは、現在の コマンドラインを検索文字列として使用します。次/前のコマンドラインの先頭がこの文字列と比較されます。一致する最初の行が新しいコマンドラインになります。これらの 2 つのキーを繰り返し入力すると、同じ文字列が再び使用されます。たとえば、これは以前の置換コマンドを見つけるために使用できます。":s" と入力してから <Up> と入力します。目的のコマンドラインが表示されるまで <S-Up> を何回か入力することによっても同じことができます。(注意:シフトされた矢印キーはすべての端末で機能するわけではありません)
:his :history :his[tory] 最後に入力されたコマンドの履歴を表示します。
:his[tory] [{name}] [{first}][, [{last}]] 履歴 {name} の内容をリストします。{name} は次のとおりです。 c[md] または : コマンドライン履歴 s[earch] または / または ? 検索文字列履歴 e[xpr] または = 式レジスタ履歴 i[nput] または @ 入力行履歴 d[ebug] または > デバッグコマンド履歴 a[ll] 上記のすべて
番号 {first}{last} が指定されている場合、履歴の対応する範囲のエントリがリストされます。これらの番号は、次の形式で指定できます。 :history-indexing
正の数は、:history リストの最初の列に示されているように、エントリの絶対インデックスを表します。この番号は、他のエントリが削除されても固定されたままです。(E1510 を参照)
負の数は、最新のエントリ(インデックス -1)から逆方向にカウントされたエントリの相対位置を意味します。
例:検索履歴のエントリ 6 から 12 をリストします
:history / 6,12
すべての履歴から最後から 2 番目のエントリをリストします
:history all -2
すべての履歴から最新の 2 つのエントリをリストします
:history all -2,
:keepp[atterns] {command} :keepp :keeppatterns 検索履歴に何も追加せずに {command} を実行します。また、:s または :& の場合は、最後の置換パターンまたは置換文字列を変更しません。

2. コマンドライン補完 cmdline-completion

コマンドラインを編集する場合、カーソルの前の単語を補完するためにいくつかのコマンドを使用できます。これは、次の場合に利用できます。
コマンド名:コマンドラインの先頭。
++opt 値。
タグ:":tag" コマンドの後のみ。
ファイル名:ファイル名を受け入れるコマンド、またはファイル名に設定できるオプションの設定の後のみ。これはファイル名補完と呼ばれます。
シェルコマンド名:":!cmd"、":r !cmd"、":w !cmd" の後。$PATH が使用されます。
オプション:":set" コマンドの後のみ。
マッピング:":map" または類似のコマンドの後のみ。
変数名と関数名:":if"、":call" または類似のコマンドの後のみ。
ヘルプ項目の一致数は、非常に多くの一致がある場合の長い遅延を避けるために制限されています(現在 300 まで)。
使用できるコマンドは次のとおりです
c_CTRL-D
CTRL-D カーソルの前のパターンに一致する名前をリストします。ファイル名を表示する場合、ディレクトリは強調表示されます(highlight-groups 参照)。'suffixes' が一致する名前は最後に移動されます。 'wildoptions' オプションを "tagfile" に設定すると、一致するタグのファイルをリストできます。 c_CTRL-I c_wildchar c_<Tab> 'wildchar' オプション カーソルの前のパターンで一致が実行されます。一致(複数ある場合は最初の一致)がパターンの代わりに挿入されます。(注意:マクロ内では機能しません。なぜなら <Tab> または <Esc> はほとんどの場合 'wildchar' として使用され、これらは一部のマクロで特別な意味を持つためです。) 再び入力し、複数の一致があった場合、次の一致が挿入されます。最後の一致の後、最初の一致が再び使用されます(ラップアラウンド)。動作は 'wildmode' オプションで変更できます。 c_<S-Tab>
<S-Tab> 'wildchar' または <Tab> と同様ですが、最後の一致から始まり、次に前の一致に進みます。 c_CTRL-N
CTRL-N 複数の一致が得られた 'wildchar' を使用した後、次の一致に進みます。そうでない場合は、履歴の新しいコマンドラインを呼び出します。 c_CTRL-P
CTRL-P 複数の一致が得られた 'wildchar' を使用した後、前の一致に進みます。そうでない場合は、履歴の古いコマンドラインを呼び出します。 c_CTRL-A
CTRL-A カーソルの前のパターンに一致するすべての名前が挿入されます。 c_CTRL-L
CTRL-L カーソルの前のパターンで一致が実行されます。一致が 1 つある場合、パターンの代わりに挿入されます。複数の一致がある場合、最長共通部分がパターンの代わりに挿入されます。結果がパターンより短い場合、補完は行われません。 /_CTRL-L
'incsearch' が設定されている場合、"/" または "?" の検索パターンを入力し、現在の一致が表示された後、CTRL-L は現在の一致の 끝에서 文字を 1 つ追加します。 'ignorecase''smartcase' が設定されていて、コマンドラインに大文字がない場合、追加された文字は小文字に変換されます。 c_CTRL-G /_CTRL-G CTRL-G 'incsearch' が設定されている場合、"/" または "?" の検索パターンを入力し、現在の一致が表示された後、CTRL-G は次の一致に移動します(search-offset を考慮しません)。 CTRL-T を使用して前の一致に移動します。ヒント:通常のキーボードでは、T は G の上にあります。 c_CTRL-T /_CTRL-T CTRL-T 'incsearch' が設定されている場合、"/" または "?" の検索パターンを入力し、現在の一致が表示された後、CTRL-T は前の一致に移動します(search-offset を考慮しません)。 CTRL-G を使用して次の一致に移動します。ヒント:通常のキーボードでは、T は G の上にあります。
'wildchar' オプションのデフォルトは <Tab> です(Vi 互換モードでは CTRL-E、以前のバージョンでは <Esc> が使用されていました)。パターンでは、ファイル名を照合するときに標準の ワイルドカード が受け入れられます。
'wildchar' または CTRL-N を繰り返すと、一致を巡回し、最終的には入力されたものに戻ります。最初の一致が目的のものでない場合は、<S-Tab> または CTRL-P を使用して、入力したものにすぐに戻ることができます。
'wildmenu' オプションを設定すると、コマンドラインのすぐ上に一致を表示できます。
'wildoptions' オプションは、'wildmenu' のポップアップメニューを使用し、あいまい一致を使用するための追加設定を提供します。
'wildignorecase' オプションを設定すると、ファイル名の大文字と小文字を区別しなくなります。他のテキスト(例:コマンド名)を補完する場合、代わりに 'ignorecase' オプションが使用されます(ただし、あいまい一致では常に大文字と小文字が区別されません)。
tcsh の autolist 補完が好きな場合は、次のマッピングを使用できます
:cnoremap X <C-L><C-D>
(ここで X は使用するコマンドキー、<C-L>CTRL-L<C-D>CTRL-D です) これにより、最長一致が見つかり、次に一致するすべてのファイルがリストされます。
tcsh の autolist 補完が好きな場合は、'wildmode' オプションを使用してエミュレートできます。たとえば、これは autolist=ambiguous を模倣しています
:set wildmode=longest,list
これにより、最初の 'wildchar' で最長一致が見つかり、次に次の 'wildchar' で一致するすべてのファイルがリストされます。
スクリプトローカル関数の補完
ユーザー関数名を補完する場合、"s:" を前に付けてスクリプトローカル関数を見つけます。
接尾辞
ファイル名補完には、'suffixes' オプションを使用して、ほぼ同じ名前のファイル間の優先順位を設定できます。 複数の一致がある場合、'suffixes' オプションにある拡張子を持つファイルは無視されます。 デフォルトは ".bak,~,.o,.h,.info,.swp,.obj" で、これは ".bak"、"~"、".o"、".h"、".info"、".swp"、".obj" で終わるファイルが場合によっては無視されることを意味します。
空のエントリ、つまり連続する2つのカンマは、"." を含まない、つまり接尾辞のないファイル名に一致します。 これは "prog" を無視して "prog.c" を優先する場合に便利です。
パターン: ファイル: 一致
test* test.c test.h test.o test.c test* test.h test.o test.h と test.o test* test.i test.h test.c test.i と test.c
2つのドットを持つ接尾辞を無視することはできません。
('suffixes' オプションに一致するものを無視した後に) 一致するファイルが複数ある場合、最初のファイル名が挿入されます。 'wildchar' を2回入力すると、一致が1つだけになり、補完された一致は変わりません。 'wildchar'CTRL-N、または CTRL-P を入力することで、他の一致にアクセスできます。 'suffixes' オプションに一致する拡張子を持つファイルも含め、すべてのファイルが含まれます。
特定の拡張子を持つファイルを完全に無視するには、'wildignore' を使用します。
入力されたテキストの末尾で終わるファイルのみを一致させるには、"$" を追加します。 たとえば、".c" で終わるファイルのみを一致させるには
:e *.c$
これは ".cpp" で終わるファイルには一致しません。 "$" がなければ一致します。
xterm で <S-Tab>CTRL-P として使用したい場合は、.cshrc に次のコマンドを追加します。
xmodmap -e "keysym Tab = Tab Find"
そして、vimrc にこれを追加します。
:cmap <Esc>[1~ <C-P>
complete-set-option
:set= を使用してオプションを設定する場合、'=' の直後に 'wildchar' を押すと、オプションの古い値を取得できます。 たとえば、":set dir=" の後に 'wildchar' を入力すると、'dir' の現在の値が挿入されます。 これは、ファイル名を受け取るオプションのファイル名補完を無効にします。
:set=:set+=、または :set^= を使用する場合、定義済みの名前または構文を持つ文字列オプション (例: 'diffopt''listchars')、または単一文字フラグのリストであるオプション (例: 'shortmess') は、'wildchar' を使用すると、補完のための可能な値のリストも表示します。
:set-= を使用する場合、'diffopt''backupdir' のようなカンマ区切りのオプションは、各項目を個別に表示します。 'shortmess' のようなフラグリストオプションは、古い値全体と個々のフラグの両方を表示します。 それ以外の場合、補完は古い値全体を埋め込むだけです。

3. Ex コマンドライン cmdline-lines

Ex コマンドにはいくつかの特殊性があります
:quote :comment 行頭の '"' は行全体が無視される原因となります。 コマンドの後の '"' は、行の残りの部分が無視される原因となります。 これはコメントを追加するために使用できます。 例
:set ai                "set 'autoindent' option
シェルコマンド ":!cmd" や ":map" コマンド、および '"' を引数の一部と見なす他のいくつかのコマンド (主に式を期待するコマンド) にコメントを追加することはできません
:argdo :autocmd :bufdo :cexpr (など) :cdo (など) :command :debug :display :echo (など) :elseif :execute :folddoopen :folddoclosed :for :grep (など) :help (など) :if :let :make :map (など、:abbrev コマンドを含む) :menu (など) :mkspell :normal :ownsyntax :popup :registers :return :sort :syntax :tabdo :tearoff :vimgrep (など) :while :windo
:bar :\bar '|' はコマンドを区切るために使用できるため、1行に複数のコマンドを指定できます。 引数に '|' を使用したい場合は、その前に '\' を付けます。
これらのコマンドは '|' を引数と見なすため、別の Vim コマンドを続けることができません。:argdo :autocmd :bufdo :cdo :cfdo :command :debug :eval :folddoopen :folddoclosed :function :global :help :helpgrep :ldo :lfdo :lhelpgrep :make :normal :perlfile :pyfile :python :registers :read ! :sign :tabdo :terminal :vglobal :windo :write ! :[range]! "-bar" 引数のないユーザー定義コマンド :command
これは混乱を招くことに注意してください (Vi から継承)。 ":g" では '|' はコマンドに含まれ、":s" では含まれません。
とにかく別のコマンドを使用できるようにするには、":execute" コマンドを使用します。 例 ("ls" の出力を追加して最初の行にジャンプ)
:execute 'r !ls' | '[
例外が1つあります。 'cpoptions' に 'b' フラグが存在する場合、":map" および ":abbr" コマンドなどでは、'\' の代わりに CTRL-V を使用する必要があります。 "<Bar>" を代わりに使用することもできます。 map_bar も参照してください。
:!ls | wc                view the output of two commands
:r !ls | wc                insert the same output in the text
:%g/foo/p|>                moves all matching lines one shiftwidth
:%s/foo/bar/|>                moves one line one shiftwidth
:map q 10^V|                map "q" to "10|"
:map q 10\| map \ l        map "q" to "10\" and map "\" to "l"
                                (when 'b' is present in 'cpoptions')
'|' と同様に、<NL> を使用してコマンドを区切ることもできます。 <NL> を挿入するには、CTRL-V CTRL-J を使用します。 "^@" が表示されます。 '|' を使用するのが推奨される方法です。 しかし、外部コマンドの場合、'|' は外部コマンドに含まれるため、<NL> を使用する必要があります。 <NL> の特別な意味を回避するには、その前にバックスラッシュを付ける必要があります。 例
:r !date<NL>-join
これは現在の日付をファイルに読み込み、前の行と結合します。
'|' の前のコマンドでエラーが発生した場合、後続のコマンドは実行されないことに注意してください。
Vi との互換性のために、以下の奇妙なコマンドがサポートされています
:|                        print current line (like ":p")
:3|                        print line 3 (like ":3p")
:3                        goto line 3
範囲とコマンド名の間にコロンを付けることができます。 これは無視されます (Vi と互換性があります)。 例えば
:1,$:s/pat/string
ファイル名が予期される場所で文字 '%' または '#' が使用されると、それらは現在および代替のファイル名に展開されます (「ファイルの編集」の章を参照 :_% :_#)。
ファイル名の末尾のスペースは、バックスラッシュまたは CTRL-V でエスケープされていない限り、無視されます。 ":next" コマンドはスペースを使用してファイル名を区切ることに注意してください。 スペースをエスケープしてファイル名に含めます。 例
:next foo\ bar goes\ to school\
3つのファイル "foo bar"、"goes to"、"school " の編集を開始します。
コマンドで特殊文字 '"' または '|' を使用する場合、またはファイル名で '%' または '#' を使用する場合は、その前にバックスラッシュを付けます。 範囲内および ":substitute" コマンドではバックスラッシュは必要ありません。 `= も参照してください。
:_!
Ex コマンドの後の '!' (感嘆符) 文字は、コマンドの動作を変化させます。 '!' は、間に空白を入れずに、コマンドの直後に配置する必要があります。 空白を挿入すると、'!' はコマンドの引数と見なされ、意味が異なります。 例えば: :w! name 現在のバッファをファイル "name" に書き込み、既存のファイルを上書きします :w !name 現在のバッファを標準入力としてコマンド "name" に送信します

4. Ex コマンドラインの範囲 cmdline-ranges [range] E16

一部の Ex コマンドは、その前に行範囲を受け入れます。 これは [range] と表記されます。 これは、',' または ';' で区切られた1つ以上の行指定子で構成されます。
基本はユーザーマニュアルのセクション 10.3 で説明されています。
:, :; ';' で区切られている場合、カーソル位置は次の行指定子を解釈する前にその行に設定されます。 ',' の場合はそうではありません。 例
4,/this line/
4行目からカーソル行の後の "this line" との一致まで。
5;/that line/
5行目から5行目の後の "that line" との一致まで。
ほとんどのコマンドのデフォルトの行指定子はカーソル位置ですが、":write" コマンドと ":global" コマンドはデフォルトでファイル全体 (1,$) を使用します。
コマンドに必要な数よりも多くの行指定子が指定されている場合、最初の1つ以上は無視されます。
行番号は次のように指定できます: :range {address} {number} 絶対行番号 E1247 . 現在の行 :.
$ ファイルの最後の行 :$
% 1,$ (ファイル全体) と同じ :%
't マーキング t (小文字) の位置 :'
'T マーキング T (大文字) の位置。マーキングが別のファイルにある場合、範囲では使用できません /{pattern}[/] {pattern} が一致する次の行 :/
以下の :range-pattern も参照してください ?{pattern}[?] {pattern} が一致する前の行 :? 以下の :range-pattern も参照してください \/ 前に使用した検索パターンが一致する次の行 \? 前に使用した検索パターンが一致する前の行 \& 前に使用した置換パターンが一致する次の行
:range-offset
それぞれに '+' または '-' とオプションの数字を続けることができます (複数回)。 この数字は、前の行番号に加算または減算されます。 数字が省略されている場合は、1 が使用されます。 '+' または '-' の前に何もない場合は、現在の行が使用されます。 :range-closed-fold
カンマの後の行番号が閉じられた折り畳み内にある場合、それは折り畳みの最後の行に調整されるため、折り畳み全体が含まれます。
数値が追加される場合、これは折り畳みの最後の行への調整後に行われます。 つまり、これらの行は範囲に追加で含まれます。 例えば
:3,4+2print
このテキストについて
1 one
2 two
3 three
4 four FOLDED
5 five FOLDED
6 six
7 seven
8 eight
4行目と5行目が閉じられた折り畳みである場合、3行目から7行目までが出力されます。 7は範囲の "4" から来ており、これは閉じられた折り畳みの末尾である5に調整され、次にオフセット2が追加されます。
減算の例 (あまり役に立ちません)
:2,4-1print
このテキストについて
1 one
2 two
3 three FOLDED
4 four FOLDED
5 five FOLDED
6 six FOLDED
7 seven
8 eight
3行目から6行目までが閉じられた折り畳みである場合、2行目から6行目までが出力されます。 6は範囲の "4" から来ており、これは閉じられた折り畳みの末尾である6に調整され、次に1が減算され、これはまだ閉じられた折り畳み内にあり、その折り畳みの最後の行である6が使用されます。
:range-pattern
{pattern} の後の "/" と "?" は、パターンとそれに続くものを区切るために必要です。
"/" と "?" の前に別のアドレスを付けることができます。 検索はそこから開始されます。 ';' を使用する場合との違いは、カーソルが移動されないことです。 例
/pat1//pat2/        Find line containing "pat2" after line containing
                "pat1", without moving the cursor.
7;/pat2/        Find line containing "pat2", after line 7, leaving
                the cursor in line 7.
{number} は 0 からファイルの行数までの間でなければなりません。0 を使用すると、ほとんどのコマンドでは 1 として解釈されます。カウントとして使用するコマンドは、0 をゼロとして使用します (:tag:pop など)。 一部のコマンドは、ゼロを「最初の行の前」として解釈します (:read、検索パターンなど)。
.+3                three lines below the cursor
/that/+1        the line below the next line containing "that"
.,$                from current line until end of file
0;/that                the first line containing "that", also matches in the
                first line.
1;/that                the first line after line 1 containing "that"
一部のコマンドでは、コマンドの後にカウントを指定できます。このカウントは、最後の行指定子で指定された行 (デフォルトはカーソル行) から始まる、使用される行数として使用されます。カウントを受け入れるコマンドは、範囲を使用しますが、ファイル名引数を持たないコマンドです (ファイル名は数字にもなるため)。カウントは負の値にすることはできません。
:s/x/X/g 5        substitute 'x' by 'X' in the current line and four
                following lines
:23d 4                delete lines 23, 24, 25 and 26
折りたたみと範囲
折りたたみがアクティブな場合、行番号は閉じた折りたたみ全体を含むように丸められます。fold-behavior を参照してください。
逆範囲 E493
範囲は、小さい方の行番号を最初に指定する必要があります。そうでない場合、Vim は行番号を交換するかどうかを尋ねます。
逆範囲が指定されました。交換してもよろしいですか?
これはグローバルコマンド ":g" 内では行われません。
質問を回避するために、コマンドの前に ":silent" を使用することができます。その場合、範囲は常に交換されます。
カウントと範囲 N:
":" を入力する前にカウントを指定すると、これは次のように変換されます。
:.,.+(count - 1)
つまり、カーソル位置とその後の "カウント" 行です。例:3行を削除するには
3:d<CR>                is translated into: .,.+2d<CR>
ビジュアルモードと範囲 v_:
{Visual}: ビジュアル選択された行を範囲としてコマンドラインを開始します。この範囲にはコード :'<,'> が使用されます。これにより、コマンドライン履歴から同様の行を選択して、異なるビジュアル選択行でコマンドを繰り返すことができます。
:* :star :star-visual-range ビジュアルモードが既に終了している場合、ビジュアル領域を範囲として使用するための簡単な方法は :* です。

5. Ex コマンドラインフラグ ex-flags

これらのフラグは、一部の Ex コマンドでサポートされています。コマンド実行後にカーソルが置かれる行を出力します。
l :list のような出力 # 行番号を追加 p :print のような出力
フラグは組み合わせることができます。したがって、 "l#" は行番号と :list スタイルの出力の両方を使用します。

6. Ex 特殊文字 cmdline-special

**注意:** これらは、実行されたコマンドラインの特殊文字です。入力中に特殊なものを挿入したい場合は、CTRL-R コマンドを使用できます。たとえば、 "%" は現在のファイル名を表しますが、CTRL-R % は現在のファイル名をすぐに挿入します。c_CTRL-R を参照してください。
**注意:** Vim スクリプトで特殊文字の影響を回避したい場合は、fnameescape() を使用することを検討してください。`= も参照してください。
Ex コマンドでは、ファイル名を使用できる場所で、次の文字は特別な意味を持ちます。これらは式関数 expand() でも使用できます。 % 現在のファイル名に置き換えられます。 :_% c_% # 代替ファイル名に置き換えられます。 :_# c_# これはすべてのウィンドウで記憶されます。 #n (n は数字) は :_#0 :_#n バッファ n のファイル名に置き換えられます。 "#0" は "#" と同じです。 c_#n ## 引数リスト内のすべての名前 :_## c_## を連結してスペースで区切ったものに置き換えられます。名前の各スペースの前にはバックスラッシュが付きます。 #<n (n は 0 より大きい数字) は古い :_#< c_#< ファイル名 n に置き換えられます。:oldfiles または v:oldfiles を参照して番号を取得してください。 E809
これらは、"#<n" を除いて、入力されたままのファイル名を提供することに注意してください。絶対パスが必要な場合 (別のディレクトリからファイル名を使用する場合) は、":p" を追加する必要があります。filename-modifiers を参照してください。
"#<n" 項目は絶対パスを返しますが、ホームディレクトリ以下のファイルの場合は "~/" で始まります。
コマンドがファイル名を正しく解釈できるように、スペースの前にバックスラッシュが挿入されることに注意してください。しかし、これはシェルコマンドには起こりません。シェルコマンドの場合は、おそらく引用符を使用する必要があります (これは引用符とワイルドカードを含むファイルでは失敗します)。
:!ls "%"
:r !spell "%"
'%' と '#' の特別な意味を回避するには、その前にバックスラッシュを挿入します。詳細: 特殊な意味は、前にバックスラッシュがある場合は常にエスケープされます。バックスラッシュの数に関係ありません。
入力:結果
# alternate.file \# # \\# \# `= も参照してください。
E499 E500 **注意:** これらは文字通りに入力されます。特殊キーではありません! :<cword> <cword> <cword> は、カーソル下の単語に置き換えられます (star のように)。 :<cWORD> <cWORD> <cWORD> は、カーソル下の WORD に置き換えられます (WORD を参照)。 :<cexpr> <cexpr> <cexpr> は、カーソル下の単語に置き換えられ、C式を形成するためにより多くのものが含まれます。たとえば、カーソルが "ptr->arg" の "arg" にある場合、結果は "ptr->arg" になります。カーソルが "list[idx]" の "]" にある場合、結果は "list[idx]" になります。 :<cfile> <cfile> <cfile> は、カーソル下のパス名に置き換えられます (gf が使用するもののように)。 :<afile> <afile> <afile> オートコマンドを実行する場合、操作対象のバッファのファイル名、または読み取りまたは書き込みのファイルに置き換えられます。 E495 :<abuf> <abuf> <abuf> オートコマンドを実行する場合、現在有効なバッファ番号に置き換えられます。すべてのイベントに設定されているわけではありません。bufnr() も参照してください。 ":r file" と ":so file" の場合、これは現在のバッファであり、読み取り/ソースされているファイルはバッファにありません。 E496 :<amatch> <amatch> <amatch> オートコマンドを実行する場合、このオートコマンドが実行された一致に置き換えられます。 E497 ファイル名が一致に使用されない場合 (FileType、Syntax、SpellFileMissing イベントの場合)、<afile> とは異なります。一致がファイル名の場合、フルパスに展開されます。 :<sfile> <sfile> <sfile> :source コマンドを実行する場合、ソースファイルのファイル名に置き換えられます。 E498 関数を実行する場合、<stack> と同様に、呼び出しスタックに置き換えられます (これは下位互換性のためです。<stack> または <script> を使用することをお勧めします)。<sfile> がスクリプト内で使用されていない場合、ファイル名修飾子は役に立たないことに注意してください。 :<stack> <stack> <stack> は呼び出しスタックに置き換えられます。関数行には "function {function-name}[{lnum}]"、スクリプト行には "script {file-name}[{lnum}]" を使用し、項目間には ".." を使用します。例: "function {function-name1}[{lnum}]..{function-name2}[{lnum}]" 呼び出しスタックがない場合は、エラー E489 が発生します。 :<script> <script> <script> :source コマンドを実行する場合、ソースファイルのファイル名に置き換えられます。関数を実行する場合、それが定義されているスクリプトのファイル名に置き換えられます。ファイル名を判別できない場合は、エラー E1274 が発生します。 :<slnum> <slnum> <slnum> :source コマンドを実行する場合、行番号に置き換えられます。 E842 関数を実行する場合は、関数の開始からの相対行番号です。 :<sflnum> <sflnum> <sflnum> スクリプトを実行する場合、行番号に置き換えられます。<slnum> とは異なり、<sflnum> はどのような状況でもスクリプトの行番号に置き換えられます。 E961
ファイル名修飾子
:_%: ::8 ::p ::. ::~ ::h ::t ::r ::e ::s ::gs ::S %:8 %:p %:. %:~ %:h %:t %:r %:e %:s %:gs %:S ファイル名修飾子は、"%", "#", "#n", "<cfile>", "<sfile>", "<afile>", "<abuf>" の後に使用できます。また、fnamemodify() 関数でも使用されます。これらの修飾子は、以下の順序で指定できます。 :p ファイル名を絶対パスにします。最初の修飾子でなければなりません。また、"~/" (Unix の場合は "~user/") をホームディレクトリのパスに変更します。名前がディレクトリの場合、最後にパス区切り文字が追加されます。存在しないファイル名で、絶対パスでない場合、結果は予測できません。MS-Windows では、8.3 ファイル名は長い名前に展開されます。 :8 パスを 8.3 ショートフォーマットに変換します (現在は MS-Windows のみ)。既存のパスであるパスの限り多くの部分に作用します。 :~ 可能であれば、ファイル名をホームディレクトリからの相対パスに縮小します。ファイル名がホームディレクトリ以下でない場合は変更されません。 :. 可能であれば、ファイル名をカレントディレクトリからの相対パスに縮小します。ファイル名がカレントディレクトリ以下でない場合は変更されません。最短にするには、":~." を使用します。 :h ファイル名の先頭部分 (最後の要素と区切り文字が削除されます)。:e、:r、:t と一緒に使用することはできません。末尾から複数の要素を削除するために繰り返すことができます。ファイル名がパス区切り文字で終わる場合、パス区切り文字のみが削除されます。したがって、ディレクトリ名に対する ":p:h" は、ディレクトリ名自体になります (末尾のスラッシュなし)。ファイル名が絶対パス (Unix の場合は "/"、Win32 の場合は "x:\" で始まる) の場合、その部分は削除されません。先頭部分がない場合 (パスがカレントディレクトリからの相対パスである場合)、結果は空になります。 :t ファイル名の末尾部分 (名前の最後の要素)。:r または :e より前に指定する必要があります。 :r ファイル名のルート (最後の拡張子が削除されます)。拡張子のみの場合 (ファイル名が '.' で始まる場合、例: ".nvimrc")、削除されません。複数の拡張子を削除するために繰り返すことができます (最後の拡張子から)。 :e ファイル名の拡張子。単独で使用する場合にのみ意味があります。拡張子がない場合、結果は空になります。拡張子のみの場合 (ファイル名が '.' で始まる場合)、結果は空になります。複数の拡張子を含めるために繰り返すことができます。拡張子が十分でない場合 (ただし、少なくとも 1 つある場合)、できるだけ多く含まれます。 :s?pat?sub? "pat" の最初の出現を "sub" に置き換えます。これは :s コマンドのように動作します。"pat" は正規表現です。'?' には任意の文字を使用できますが、"pat" または "sub" に出現してはなりません。この後、前の修飾子を再び使用できます。たとえば、":p" を使用して、置換後に絶対パスを作成できます。 :gs?pat?sub? "pat" のすべての出現を "sub" に置き換えます。それ以外の場合は、":s" と同様に動作します。 :S シェルコマンドで使用する特殊文字をエスケープします (shellescape() を参照)。最後でなければなりません。 例
:!dir <cfile>:S
:call system('chmod +w -- ' . expand('%:S'))
ファイル名が "src/version.c"、カレントディレクトリが "/home/mool/vim" の場合の例
:p                        /home/mool/vim/src/version.c
:p:.                                       src/version.c
:p:~                                 ~/vim/src/version.c
:h                                       src
:p:h                        /home/mool/vim/src
:p:h:h                /home/mool/vim
:t                                           version.c
:p:t                                           version.c
:r                                       src/version
:p:r                        /home/mool/vim/src/version
:t:r                                           version
:e                                                   c
:s?version?main?                       src/main.c
:s?version?main?:p        /home/mool/vim/src/main.c
:p:gs?/?\\?                \home\mool\vim\src\version.c
ファイル名が "src/version.c.gz" の場合の例
:p                        /home/mool/vim/src/version.c.gz
:e                                                     gz
:e:e                                                   c.gz
:e:e:e                                           c.gz
:e:e:r                                           c
:r                                       src/version.c
:r:e                                                   c
:r:r                                       src/version
:r:r:r                               src/version
拡張子の削除 :_%< "%"、"#"、"#n"、または "CTRL-V p" に "<" が追加されると、ファイル名の拡張子が削除されます (ファイル名の最後の '.' 以降)。これはバージョン 3.0 との後方互換性のために含まれています。":r" 形式が推奨されます。 例
%                current file name
%<                current file name without extension
#                alternate file name for current window
#<                idem, without extension
#31                alternate file number 31
#31<                idem, without extension
<cword>                word under the cursor
<cWORD>                WORD under the cursor (see |WORD|)
<cfile>                path name under the cursor
<cfile><        idem, without extension
注: ファイル名が予期される場合、ワイルドカード展開が行われます。Unix では、内部的に実行できる場合を除き (速度のため)、シェルが使用されます。以下のように、バッククォートも機能します
:n `echo *.c`
ただし、展開は '%'、'#' などを展開する前にワイルドカードがある場合にのみ行われます。これにより、ファイル名内のワイルドカードの展開が回避されます。<cfile> の結果を展開する場合は、ワイルドカード文字を追加します。例: (代替ファイル名は "?readme?") コマンドは次のように展開されます
:e #                :e ?readme?
:e `ls #`        :e {files matching "?readme?"}
:e #.*                :e {files matching "?readme?.*"}
:cd <cfile>        :cd {file name under cursor}
:cd <cfile>*        :cd {file name under cursor plus "*" and then expanded}
`= も参照してください。
展開された引数に "!" が含まれていて、シェルコマンド (":!cmd", ":r !cmd", ":w !cmd") に使用される場合、以前に使用されたコマンドに展開されないように、"!" はバックスラッシュでエスケープされます。'shell' オプションに "sh" が含まれている場合、シェルが "!" を展開しようとするのを防ぐために、これが 2 回行われます。
ファイル名 - バックスラッシュ
ディレクトリ区切り文字としてバックスラッシュを使用するファイルシステム (Windows ファイルシステム) では、次の文字の特殊な意味をエスケープするために使用されるバックスラッシュを認識するのが少し難しいです。一般的なルールは次のとおりです。バックスラッシュの後に通常のファイル名文字が続く場合、特殊な意味はありません。したがって、"\file\foo" は有効なファイル名であり、バックスラッシュを 2 回入力する必要はありません。
例外は '$' 記号です。ファイル名で有効な文字です。ただし、"$home" のようなファイル名が環境変数として解釈されないようにするには、バックスラッシュを前に付ける必要があります。したがって、ルートディレクトリのファイル "$home" には "/\$home" を使用する必要があります。いくつかの例
ファイル名 解釈
$home 環境変数 $home の値に展開 \$home カレントディレクトリのファイル "$home" /\$home ルートディレクトリのファイル "$home" \\$home ファイル "\\"、その後に展開された $home
`= も参照してください。

7. コマンドラインウィンドウ コマンドラインウィンドウ cmdwin

コマンドラインウィンドウ
コマンドラインウィンドウでは、コマンドラインは他のウィンドウでテキストを編集するのと同じように編集できます。通常の方法で離れることができないため、特別な種類のウィンドウです。

開く c_CTRL-F q: q/ q?

コマンドラインウィンドウを開くには、2 つの方法があります。1. コマンドラインモードから、'cedit' オプションで指定されたキーを使用します。2. ノーマルモードから、"q:"、 "q/"、または "q?" コマンドを使用します。これにより、Ex コマンドライン ("q:") または検索文字列 ("q/" または "q?") の編集が開始されます。記録中はこれはできません ( "q" は記録を停止します)。
ウィンドウが開くと、コマンドラインの履歴が表示されます。最後の行には、これまでにタイプされたコマンドが含まれています。左側の列には、編集中のコマンドラインのタイプを示す文字が表示されます。cmdwin-char を参照してください。
エディタが開かれると、Vim はノーマルモードになります。
ウィンドウの高さは 'cmdwinheight' で指定されます (スペースがない場合は小さくなります)。ウィンドウは常に全幅で、コマンドラインのすぐ上に配置されます。

編集

コマンドを使用して、ウィンドウ内のテキストを移動して編集できます。ノーマルモードと挿入モードの両方で。
":"、"/"、およびコマンドラインを使用する他のコマンドを使用することはできますが、その場合は別のコマンドラインウィンドウを開くことはできません。ネストはありません。E11 E1188 コマンドラインウィンドウは通常のウィンドウではありません。別のウィンドウに移動したり、別のバッファを編集したりすることはできません。これを行うすべてのコマンドは、コマンドラインウィンドウでは無効になっています。もちろん、コマンドラインウィンドウに入力したコマンドを実行することは * できます *。ウィンドウを閉じると、他のテキスト編集は破棄されます。

閉じる E199

コマンドラインウィンドウを終了するには、いくつかの方法があります
<CR> カーソルの下のコマンドラインを実行します。挿入モードとノーマルモードの両方で機能します。CTRL-C コマンドラインモードを続行します。カーソルの下のコマンドラインがコマンドラインとして使用されます。挿入モードとノーマルモードの両方で機能します。再描画がないため、ウィンドウは表示されたままになります。:quit コマンドラインを破棄し、ノーマルモードに戻ります。":close"、CTRL-W c、":exit"、":xit"、CTRL-\ CTRL-N も機能します。:qall バッファに変更がない限り、Vim を終了します。:qall! バッファへの変更を破棄して、Vim を終了します。
コマンドラインウィンドウが閉じられると、元のウィンドウサイズが復元されます。実行されたコマンドは、コマンドラインが開始されたウィンドウとバッファに適用されます。これは、コマンドラインウィンドウが存在しないかのように動作しますが、画面が余分に再描画されます。コマンドラインウィンドウに使用されたバッファは削除されます。<CR> で実行される行以外の行への変更は失われます。
カーソルの下のコマンドを実行してから、コマンドラインウィンドウを再び開きたい場合は、このマッピングが役立つ場合があります
:autocmd CmdwinEnter * map <buffer> <F5> <CR>q:

その他

コマンドラインウィンドウがすでに存在する場合、コマンドラインウィンドウを使用することはできません (ネスト不可)。
コマンドラインウィンドウが開かれると、いくつかのオプションが設定されます。'filetype' "vim" (Ex コマンドラインを編集する場合)。有効になっている場合は Vim 構文の強調表示が開始されます'rightleft' オフ'modifiable' オン'buftype' "nofile"'swapfile' オフ
バッファの内容をファイルに書き込むことができます。これは、コマンドラインの履歴を保存して後で読み戻す簡単な方法です。
もし'wildchar'オプションが<Tab>に設定されていて、Exコマンドにコマンドラインウィンドウが使用されている場合、コマンドラインウィンドウで補完に<Tab>を使用するための2つのマッピングが以下のように追加されます。
:inoremap <buffer> <Tab> <C-X><C-V>
:nnoremap <buffer> <Tab> a<C-X><C-V>
ノーマルモードで<Tab>を押すと、次の文字で補完が行われることに注意してください。この方法では、行末でも機能します。 これらのマッピングが不要な場合は、以下のように無効にしてください。
au CmdwinEnter [:>] iunmap <buffer> <Tab>
au CmdwinEnter [:>] nunmap <buffer> <Tab>
これらの行をvimrcファイルに記述することができます。
コマンドラインウィンドウでは、マウスを使用してカーソルを別のウィンドウに移動したり、他のウィンドウのステータスラインをドラッグしたりすることはできません。 コマンドラインウィンドウ自体のステータスラインとその上のステータスラインはドラッグできます。 したがって、コマンドラインウィンドウのサイズは変更できますが、他のウィンドウのサイズは変更できません。
getcmdwintype()関数は、cmdwin-charで説明されているように、編集中のコマンドラインのタイプを返します。
Nvimは、"nvim_cmdwin"グループにこのデフォルトのCmdWinEnter autocmdを定義しています。
autocmd CmdWinEnter [:>] syntax sync minlines=1 maxlines=1
設定ファイルで "autocmd! nvim_cmdwin" を使用してこれを無効にすることができます。 default-autocmds

自動コマンド

2つの自動コマンドイベントが使用されます:CmdwinEnterCmdwinLeave。 Cmdwinイベントを使用して、コマンドラインウィンドウに固有の設定を行うことができます。副作用を引き起こさないように注意してください! 例:
:au CmdwinEnter :  let b:cpt_save = &cpt | set cpt=.
:au CmdwinLeave :  let &cpt = b:cpt_save
これは、i_CTRL-Nのために現在のウィンドウで補完を使用するように'complete'を設定します。 もう一つの例:
:au CmdwinEnter [/?]  startinsert
これは、Vimをコマンドラインウィンドウで挿入モードで起動させます。
cmdline-char cmdwin-char パターンに使用される文字は、コマンドラインのタイプを示します。 : 通常のExコマンド > デバッグモードコマンド debug-mode / 前方検索文字列 ? 後方検索文字列 = "= expr-registerの式 @ input()の文字列 - :insertまたは:appendのテキスト
メイン
コマンド索引
クイックリファレンス