トップ > 初級編 > 入力関連 >
コマンドライン履歴の利用

  

コマンドライン履歴を利用する

この記事では、コマンドライン履歴を利用する方法について説明します。

コマンドライン履歴とは、exコマンドや検索テキストの入力履歴のことです。 つまり、過去に最下行で入力したexコマンドや検索テキストの蓄積です。 具体的には、:(コロン) コマンドで入力したexコマンド、/(スラッシュ) や、?(クエスチョン) コマンドで入力した検索テキストが該当します。

蓄積されたコマンドライン履歴を再利用することで、入力の手間を短縮することができます

なお、この記事では前章で作成した以下のテキストを例に操作を説明します

  1. The quick brown fox jumps over the lazy dog.
  2. Above is an English-language pangram phrase.
 

互換性をオフにしておく

コマンドライン履歴は、互換性がオフになっていなければ利用することができません。 本ウェブサイトの記事に従って作業を進めた場合は、互換性はオンになっています。

では、一時的に互換性をオフにしましょう。 互換性のオフは、設定項目 "nocompatible" で制御します。

キーボードから :set nocompatible<Enter> を入力してください。

:set nocompatible<Enter>

これで互換性がオフになり、拡張機能が使えるようになります。

  
起動中のviエディタ上での set コマンド(exコマンド)での設定は一時的なものです。 viエディタを終了すると設定は破棄されます。

コマンドライン履歴の蓄積と再利用

今までは、互換性がオンになっていました。 よって、コマンドライン履歴は全く蓄積されていません

まずは、exコマンドを実行してコマンドライン履歴を蓄積しましょう。

文字カーソルは文書の先頭にある
文字カーソルは文書の先頭にある

上図のように文字カーソルは文書の先頭にあると仮定して説明を始めます

ここでは、現在の行を対象に "dog" を "dogs" に置換しましょう。

キーボードから :s/dog/dogs/<Enter> を入力してください。

:s/dog/dogs/<Enter>
dog が dogs に置換される
dog が dogs に置換される

上図のように"dog" が "dogs" に置換されます

続いて、同じく1行目を対象に、空白を "@"(アットマーク) に置換してみましょう

キーボードから :s/ /@/g<Enter> を入力してください。

:s/ /@/g<Enter>
空白 が @(アットマーク) に置換される
空白 が @(アットマーク) に置換される

上図のように空白 が "@"(アットマーク) に置換されます

では、2行目も同様の置換を行いましょう。 まずは、2行目に移動します

キーボードから j を入力してください。

j
1行下に移動
1行下に移動

上図のように文字カーソルが1行下に移動します

では、この行でも1行目と同じ置換を行いましょう。 ただし、コマンドを入力するのではなく、蓄積された履歴を呼び出して再利用します

キーボードから : を入力してください。

:
:でexコマンド入力へ
:でexコマンド入力へ

上図のように最下行でexコマンドを入力可能な状態になります。

この状態でコマンドライン履歴を呼び出すことができます。 まずは、前のコマンドを呼び出しましょう。

コマンドライン履歴から前のコマンドを呼び出すには CTRL + P コマンドを使います。

 
  
CTRL + P コマンドは "Previous" から連想して覚えましょう。

では、実際にコマンドライン履歴から前のコマンドを呼び出しましょう。

キーボードから CTRL + P を入力してください。

<C-p>
コマンドライン履歴から前のコマンドが呼び出される
コマンドライン履歴から前のコマンドが呼び出される

上図のようにコマンドライン履歴から前のコマンドが呼び出されます。

では、さらに前のコマンドを呼び出しましょう。

キーボードから CTRL + P を入力してください。

<C-p>
コマンドライン履歴からさらに前のコマンドが呼び出される
コマンドライン履歴からさらに前のコマンドが呼び出される

上図のようにコマンドライン履歴からさらに前のコマンドが呼び出されます。

では、逆方向である次のコマンドを呼び出してみましょう。

コマンドライン履歴から次のコマンドを呼び出すには CTRL + N コマンドを使います。

 
  
CTRL + N コマンドは "Next" から連想して覚えましょう。

キーボードから CTRL + N を入力してください。

<C-n>
コマンドライン履歴から次のコマンドが呼び出される
コマンドライン履歴から次のコマンドが呼び出される

上図のようにコマンドライン履歴から次のコマンドが呼び出されます。

では、このコマンドを実行しましょう。 キーボードから <Enter> を入力してください。

<Enter>
空白 が @(アットマーク) に置換される
空白 が @(アットマーク) に置換される

上図のように空白 が "@"(アットマーク) に置換されます

テキスト検索でも同様の手順

今回はexコマンドでのコマンドライン履歴の使い方を説明しました。 テキスト検索でも、同様の操作でコマンドライン履歴を利用することができます

なお、/(スラッシュ) での前方検索と、?(クエスチョン) コマンドでの後方検索は、同じ履歴を共有しています

  
  

まとめ

CTRL + P コマンドで、コマンドライン履歴から前のコマンドを呼び出すことができます。 押すたびに1つ前のコマンドが呼び出されます。

CTRL + N コマンドでは、逆にコマンドライン履歴から次のコマンドを呼び出します。 押すたびに1つ次のコマンドが呼び出されます。

コマンド 説明
CTRL + P コマンドライン履歴から前のコマンドを呼び出す
CTRL + N コマンドライン履歴から次のコマンドを呼び出す
 
メニュー