Usr_20

Nvim :help ページは、このスクリプトから ソース を使用して、tree-sitter-vimdoc パーサーによって生成されています。


VIM ユーザーマニュアル - Bram Moolenaar 著
コマンドラインコマンドを素早く入力する
Vim には、コマンド入力を容易にするための汎用的な機能がいくつかあります。コロンコマンドは省略、編集、繰り返しが可能です。補完機能はほぼすべてのコマンドで利用できます。
20.1 コマンドライン編集 20.2 コマンドラインの省略形 20.3 コマンドライン補完 20.4 コマンドライン履歴 20.5 コマンドラインウィンドウ
次の章: usr_21.txt 終了して戻る 前の章: usr_12.txt 賢いトリック 目次: usr_toc.txt

コマンドライン編集

コロン(:)コマンドを使用する場合、または / や ? で文字列を検索する場合、Vim はカーソルを画面の一番下に移動します。そこで、コマンドまたは検索パターンを入力します。これはコマンドラインと呼ばれ、検索コマンドの入力にも使用されます。
入力したコマンドを編集する最も明らかな方法は、<BS>キーを押すことです。これはカーソルの前の文字を消去します。前に入力した別の文字を消去するには、まずカーソルキーでカーソルを移動します。例えば、次のように入力したとします。
:s/col/pig/
<Enter>キーを押す前に、「col」が「cow」であることに気づきました。これを修正するには、<Left>キーを5回押します。カーソルは「col」の直後に移動します。<BS>キーと「w」を入力して修正します。
:s/cow/pig/
これで、<Enter>キーを直接押すことができます。コマンドを実行する前に、カーソルを行末に移動する必要はありません。
コマンドラインで移動するために最もよく使用されるキー
<Left> 1文字左へ <Right> 1文字右へ <S-Left> または <C-Left> 1単語左へ <S-Right> または <C-Right> 1単語右へ CTRL-B または <Home> コマンドラインの先頭へ CTRL-E または <End> コマンドラインの末尾へ
注意: <S-Left>(Shiftキーを押しながらカーソル左キー)と <C-Left>(Controlキーを押しながらカーソル左キー)は、すべてのキーボードでは動作しません。他のShiftキーとControlキーの組み合わせも同様です。
マウスを使用してカーソルを移動することもできます。

削除

前述のように、<BS>はカーソルの前の文字を削除します。単語全体を削除するには、CTRL-Wを使用します。
/the fine pig
CTRL-W
/the fine
CTRL-U はすべてのテキストを削除するため、最初からやり直すことができます。

上書き

<Insert>キーは、文字を挿入するモードと既存の文字を置き換えるモードを切り替えます。次のテキストから始めます。
/the fine pig
<S-Left>を2回(または<S-Left>が機能しない場合は<Left>を8回)押して、カーソルを「fine」の先頭に移動します。次に、<Insert>キーを押して上書きモードに切り替え、「great」と入力します。
/the greatpig
おっと、スペースがなくなってしまいました。ここで、<BS>を使用しないでください。「t」が削除されてしまいます(これは置換モードとは異なります)。代わりに、<Insert>キーを押して上書きモードから挿入モードに切り替え、スペースを入力します。
/the great pig

キャンセル

: または / コマンドを実行しようとしたが、考えが変わりました。入力した内容を実行せずに削除するには、CTRL-C または <Esc> を押します。
注意: <Esc> は、普遍的な「脱出」キーです。残念ながら、古き良き Vi では、コマンドラインで <Esc> を押すとコマンドが実行されてしまいました! これはバグと考えられる可能性があるため、Vim は <Esc> を使用してコマンドをキャンセルします。しかし、'cpoptions' オプションを使用すると、Vi と互換性を持たせることができます。また、マッピング(Vi 用に書かれている可能性がある)を使用する場合、<Esc> も Vi と互換性があります。したがって、CTRL-C を使用する方法が常に有効です。
コマンドラインの先頭にいる場合、<BS>キーを押すとコマンドがキャンセルされます。これは、行の先頭にある「:」または「/」を削除するようなものです。

20.2 コマンドラインの省略形

":" コマンドの中には、非常に長いものがあります。":substitute" は ":s" に省略できることを既に説明しました。これは汎用的なメカニズムであり、すべての ":" コマンドは省略できます。
コマンドはどれくらい短くできるでしょうか?文字は26文字ありますが、コマンドはそれよりもはるかに多くあります。たとえば、":set" も ":s" で始まりますが、":s" は ":set" コマンドを開始しません。代わりに、":set" は ":se" に省略できます。コマンドの短い形式が2つのコマンドに使用できる場合、それはそのうちの1つだけを表します。どちらのコマンドになるかは論理的な根拠はなく、覚えておく必要があります。ヘルプファイルには、動作する最も短い形式が記載されています。たとえば、
:s[ubstitute]
これは、":substitute" の最も短い形式が ":s" であることを意味します。後続の文字は省略可能です。したがって、":su" と ":sub" も機能します。
ユーザーマニュアルでは、コマンドのフルネーム、またはまだ判読可能な短いバージョンを使用します。たとえば、":function" は ":fu" に省略できます。しかし、ほとんどの人はそれが何を意味するのか理解できないため、":fun" を使用します。(Vim には ":funny" コマンドがないため、":fun" も紛らわしいでしょう)。
Vim スクリプトでは、コマンドのフルネームを書くことをお勧めします。こうすることで、後で変更を加える際に読みやすくなります。":w" (":write") や ":r" (":read") など、よく使われるコマンドは例外です。特に紛らわしいのは ":end" で、":endif"、":endwhile"、または ":endfunction" を表す場合があります。したがって、常にフルネームを使用してください。

オプションの短縮名

ユーザーマニュアルでは、オプション名の長いバージョンが使用されています。多くのオプションには短い名前もあります。":" コマンドとは異なり、機能する短い名前は1つだけです。たとえば、'autoindent' の短い名前は 'ai' です。したがって、次の2つのコマンドは同じことを行います。
:set autoindent
:set ai
長い名前と短い名前の完全なリストは、オプションリスト にあります。

20.3 コマンドライン補完

これは、それ自体が Vi から Vim に切り替える理由となる Vim の機能の1つです。一度使用すると、もう手放せなくなります。
次のファイルを含むディレクトリがあるとします。
info.txt intro.txt bodyofthepaper.txt
最後のファイルを編集するには、次のコマンドを使用します。
:edit bodyofthepaper.txt
:edit bodyofthepaper.txt
:edit b<Tab>
これを間違って入力するのは簡単です。はるかに速い方法は次のとおりです。
:edit b<Tab>
:edit i<Tab>
これは同じコマンドになります。何が起こったのでしょうか?<Tab>キーは、カーソルの前の単語を補完します。この場合は「b」です。Vim はディレクトリを調べて、「b」で始まるファイルを1つだけ見つけます。それが探しているファイルでなければならないため、Vim はファイル名を補完します。
:edit info.txt
次に、次のように入力します。
:edit intro.txt
:edit i<Tab>
:edit i
Vim はビープ音を鳴らし、次のように表示します。
:edit info.txt

ビープ音は、Vim が複数の一致を見つけたことを意味します。そして、最初に見つけた一致(アルファベット順)を使用します。<Tab>キーをもう一度押すと、次のようになります。

:edit intro.txt
:set icon
したがって、最初の<Tab>で目的のファイルが表示されない場合は、もう一度押してください。一致する項目が複数ある場合は、すべてが順番に表示されます。最後の一致する項目で<Tab>を押すと、最初に入力した内容に戻ります。
:set isk<Tab>
:edit i
:set iskeyword
それから、すべてが再び始まります。このように、Vim は一致する項目のリストを循環します。CTRL-P を使用すると、リストを逆方向に移動できます。
:set iskeyword=@,48-57,_,192-255
<------------------- <Tab> -------------------------+ | <Tab> --> <Tab> --> :edit i :edit info.txt :edit intro.txt <-- CTRL-P <-- CTRL-P | +---------------------- CTRL-P ------------------------>

コンテキスト

":edit i" の代わりに ":set i" と入力して <Tab>キーを押すと、次のようになります。
:set is
:set icon
:set is
incsearch  isfname    isident    iskeyword  isprint
:set is
なぜ ":set info.txt" にならないのでしょうか?これは、Vim にはコンテキスト依存の補完機能があるためです。Vim が検索する単語の種類は、その前のコマンドによって異なります。Vim は、":set" コマンドの直後にファイル名を使用することはできないが、オプション名を使用できることを知っています。ここでも、<Tab>キーを繰り返し入力すると、Vim はすべての一致する項目を循環します。かなりたくさんあるので、最初にもっと文字を入力した方が良いでしょう。

:set is<Tab>

次のようになります。
補完の動作を変更するには、'wildmode' オプションを使用できます。 'wildmenu' オプションを使用すると、一致する候補がメニュー形式で表示されます。 'suffixes' オプションを使用して、重要度の低いファイルを指定すると、ファイルリストの最後に表示されます。 'wildignore' オプションは、リストに表示されないファイルを指定します。
これらすべてに関する詳細は、こちらをご覧ください: コマンドライン補完

20.4 コマンドライン履歴

第3章で履歴について簡単に触れました。基本は、<上>キーを使用して以前のコマンドラインを呼び出すことができます。 <下>キーは、新しいコマンドに戻ります。
実際には5つの履歴があります。ここで説明するのは、":"コマンドと "/" および "?" 検索コマンドの履歴です。 "/" と "?" コマンドはどちらも検索コマンドであるため、同じ履歴を共有します。他の3つの履歴は、式、デバッグモードコマンド、および input() 関数の入力行用です。 コマンドライン履歴
":set" コマンドを実行し、さらに10個のコロンコマンドを入力してから、その ":set" コマンドをもう一度繰り返したいとします。 ":" を押してから、10回<上>キーを押すことができます。より速い方法があります。
:se<Up>
Vim は、"se" で始まる前のコマンドに戻ります。 これは、探していた ":set" コマンドである可能性が高くなります。少なくとも、(":set" コマンドばかり実行していない限り)<上>キーを何度も押す必要はありません。
<上>キーは、入力済みのテキストを使用して、履歴の行と比較します。一致する行のみが使用されます。探している行が見つからない場合は、<下>キーを使用して入力内容に戻り、修正してください。または、CTRL-U を使用して最初からやり直してください。
履歴内のすべての行を表示するには
:history
これは ":" コマンドの履歴です。検索履歴はこのコマンドで表示されます
:history /
CTRL-P は<上>キーと同様に機能しますが、すでに入力した内容に関係なく機能します。 CTRL-N<下>キーも同様です。 CTRL-P は previous(前)、CTRL-N は next(次)の略です。

20.5 コマンドラインウィンドウ

コマンドラインでのテキスト入力は、挿入モードでのテキスト入力とは異なります。テキストを変更する多くのコマンドは許可されません。ほとんどのコマンドでは問題ありませんが、複雑なコマンドを入力する必要がある場合もあります。そこでコマンドラインウィンドウが役立ちます。
次のコマンドでコマンドラインウィンドウを開きます
q:
Vim は下部に(小さな)ウィンドウを開きます。 コマンドライン履歴と、最後に空の行が含まれています
+-------------------------------------+
|other window                              |
|~                                      |
|file.txt=============================|
|:e c                                      |
|:e config.h.in                              |
|:set path=.,/usr/include,,              |
|:set iskeyword=@,48-57,_,192-255     |
|:set is                              |
|:q                                      |
|:                                      |
|command-line=========================|
|                                      |
+-------------------------------------+
これでノーマルモードになります。 "hjkl" キーを使用して移動できます。たとえば、"5k" で ":e config.h.in" 行に移動します。 "$h" と入力して "in" の "i" に移動し、"cwout" と入力します。これで、行は次のように変更されました
:e config.h.out
ここで<Enter>キーを押すと、このコマンドが実行されます。 コマンドラインウィンドウが閉じます。 <Enter>コマンドは、カーソルの下の行を実行します。 Vim が挿入モードかノーマルモードかは関係ありません。コマンドラインウィンドウでの変更は失われます。履歴が変更されることはありません。ただし、実行したコマンドは、すべての実行されたコマンドと同様に、履歴の最後に追加されます。
コマンドラインウィンドウは、履歴の概要を確認したり、類似のコマンドを検索したり、少し変更して実行したりする場合に非常に便利です。検索コマンドを使用して何かを見つけることができます。前の例では、"?config" 検索コマンドを使用して、"config" を含む前のコマンドを見つけることができます。コマンドラインウィンドウで検索するためにコマンドラインを使用しているため、少し奇妙です。その検索コマンドを入力している間は、別のコマンドラインウィンドウを開くことはできません。同時に開くことができるのは1つだけです。
次の章: usr_21.txt 終了して戻る
著作権: manual-copyright を参照してください vim:tw=78:ts=8:noet:ft=help:norl
メイン
コマンド索引
クイックリファレンス