このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linuxコマンドの基本:vi エディタの操作:便利なカーソル移動

vi エディタの操作:便利なカーソル移動

 vi エディタでは、効率的なテキスト編集を行うために、カーソルの移動コマンドを使いこなすことが重要です。ここでは、基本的なカーソル移動に加えて、より便利な移動方法を学びます。

練習用ファイルの準備

 まず、練習用にシステムの/etc/crontabファイルをカレントディレクトリにコピーし、vi で開きます。

user01@ubuntu:~$ cp /etc/crontab  .
user01@ubuntu:~$ ls
crontab  work          テンプレート  ドキュメント  ピクチャ      公開
snap     ダウンロード  デスクトップ  ビデオ        ミュージック
user01@ubuntu:~$ vi crontab

単語単位でのカーソル移動

wb コマンド

  • w:次の単語の先頭に移動します。
  • b:前の単語の先頭に移動します。

例:

テキスト行が以下の行に移動して、カーソルを行頭の「#」に置きます。

# that none of the other crontabs do.

  • w を押すと、「that」の「t」に移動します。
  • さらに w を押すと、「none」の「n」に移動します。

スペース以外も区切りとして認識

 vi では、スペースだけでなく句読点特殊文字も単語の区切りとして扱われます。例えば、「can't」は「can」「'」「t」の3つの単語として認識されます。

例:

 テキスト行が「# that none of the other crontabs do.」の下の行に移動して、iキーを押して挿入モードにして、次の文字を入力します。

Escキーを押してコマンドモードにし、カーソルを行頭の「Y」に置きます。

You can't do it

  • 行頭にカーソルを置いて w を押すと、「You」の「Y」から「can't」の「c」に移動します。
  • さらに w を押すと、「'」や「t」に順次移動します。

WB コマンド

細かい移動が煩わしい場合、スペースのみを単語の区切りとする WB コマンドが便利です。

  • W:次の単語の先頭に移動(スペース区切り)
  • B:前の単語の先頭に移動(スペース区切り)

注意WB は大文字で、Shift + gShift + B です。

例:

カーソルを行頭の「Y」に移動します。

You can't do it

  • 行頭にカーソルを置いて W を押すと、「You」の「Y」から「can't」の「c」に移動します。
  • さらに W を押すと、「'」や「t」には移動せず、「d」に移動します。

単語単位のカーソル移動コマンド一覧

コマンド内容
w前方に単語1つ分移動(特殊文字も区切りとする)
b後方に単語1つ分移動(特殊文字も区切りとする)
W前方に単語1つ分移動(スペースのみを区切りとする)
B後方に単語1つ分移動(スペースのみを区切りとする)
単語単位のカーソル移動コマンド一覧

行頭・行末への移動

  • 0(数字のゼロ):行頭に移動します。
  • $:行末に移動します。

ポイント

  • 長い行で画面上で折り返されていても、$を押せば物理的な行末まで移動します。

例:

テキスト行が以下の行に移動して、カーソルを「the」の「e」に置きます。

# that none of the other crontabs do.

  • カーソルを「the」の「e」に置いて 0 を押すと、行頭に移動します。
  • カーソルを再び「the」の「e」に置いて $ を押すと、行末に移動します。

行頭・行末移動コマンド

コマンド内容
0行頭に移動する
$行末に移動する
行頭・行末移動コマンド

行番号を指定して移動

大きなファイルを編集する際、特定の行番号に直接移動すると効率的です。

  • gg:ファイルの先頭行(1行目)に移動します。
  • G:ファイルの最終行に移動します。
  • <行番号>G:指定した行番号に移動します。

例:

  • 3G と入力すると、3行目に移動します。
  • Gと入力すると、最終行に移動します。
  • ggと入力すると先頭行(1行目)に移動します。

注意G は大文字で、Shift + g です。

行番号指定のカーソル移動コマンド

コマンド内容
ggファイルの先頭行に移動する
Gファイルの最終行に移動する
<数字>G指定した行番号に移動する
行番号指定のカーソル移動コマンド

ファイルの保存とviの終了、練習ファイルの削除

 これまでの練習で、crontabファイルを編集しました。ここでは、そのファイルを保存してvi を終了し、練習用に作成したファイルを削除する手順を解説します。

viでファイルを保存して終了する

1.コマンドモードに移行する

 まず、Escキーを押してコマンドモードに戻ります。挿入モードでテキストを編集していた場合、Escキーを押すことでコマンドを入力できる状態になります。

2.ファイルを保存してviを終了する

コマンドモードで以下のコマンドを入力し、Enterキーを押します。

:wq!
  • ::コマンドラインモードに入る
  • w:ファイルを保存する(write)
  • q:viを終了する(quit)
  • !:強制的に実行する(上書き保存などの確認を無視)

練習で作成したファイルを削除する

vi を終了してターミナルに戻ったら、練習用にコピーしたcrontabファイルを削除します。

user01@ubuntu:~$ rm crontab

削除の確認

lsコマンドでファイルが削除されたことを確認します。

user01@ubuntu:~$ ls
snap     ダウンロード  デスクトップ  ビデオ    ミュージック
work     テンプレート  ドキュメント  ピクチャ  公開

まとめ

  • 単語単位での移動
    wb:単語の先頭に前後移動(特殊文字も区切り)
    WB:スペース区切りで単語単位に前後移動
  • 行頭・行末への移動
    0:行頭に移動
    $:行末に移動
  • 行番号を指定して移動
    gg:ファイルの先頭へ移動
    G:ファイルの末尾へ移動
    <行番号>G:指定行へ移動

 これらのカーソル移動コマンドを活用することで、vi エディタでのテキスト編集がさらに効率的になります。ぜひ実際の編集作業で試してみてください。