■ カーソル移動

カーソルとは上図13行目の「ViVi」の直前にある赤い縦棒のことで、文字挿入・削除などを行うときに処理対象となる位置を表すものです。 したがって、効率のよい文書編集を行うためには、カーソルをいかに効率よく目的とする位置に移動することができるかが大変重要となります。

この節では ViVi の様々なカーソル移動方法について説明します。

■ 基本

もっとも基本的なカーソル移動方法には以下の2つがあります。

やりたいこと操作方法
カーソルを上下左右にひとつずつ移動したい[↑] [↓] [←] [→] カーソルキーを押します
画面上に表示されている位置にカーソルを移動したいマウス左ボタンでその部分をクリックします

カーソルキーによる移動は基本中の基本で、とてもわかりやすい方法です。 短所は移動単位は1文字または1行なので、現在カーソル位置から遠く離れた場所に移動するのに手間がかかるという点です。
また、カーソルキーを押しっぱなしにするとリピート状態になりカーソルが移動し続けますが、目的とする場所でぴったり止めるのは至難の業です。

マウスクリックによるカーソル移動は移動先が画面に見えている場合は素早く行うことができます。
短所は移動先が画面に見えていない場合には
スクロールを行う必要があるという点です。
また、右手をキーボードからマウスに持ち替える、キーボードに戻るには時間がかかります。
テキストエディタのエキスパートは、ほとんどマウスを使用せず、キーボードだけで文書編集を行うものです。

■ もっと大きな単位で移動

[↑] [↓] [←] [→] カーソルキーは1文字・行単位のカーソル移動ですが、もっと大きな単位で移動するための様々なコマンドがあります。

やりたいこと操作方法
単語単位で文書先頭方向にカーソル移動したい[Ctrl] + [←] を押します
単語単位で文書末尾方向にカーソル移動したい[Ctrl] + [→] を押します
行頭または行頭の非空白文字位置にカーソル移動したい[Home] を押します
行末にカーソル移動したい[End] を押します
対応する半角括弧の位置にカーソル移動したい[Ctrl] + ] を押します
文書先頭にカーソル移動したい[Ctrl] + [Home] を押します
文書の最後([EOF] 位置)にカーソル移動したい[Ctrl] + [End] を押します
文書先頭から12行目に移動したい[Ctrl] + G 12 [Enter]
注意:挿入モードの時のみ有効です
最後に編集した位置に移動したい[Alt] + [→] を押します
マークした位置に移動したい[検索]-[マーク位置へジャンプ] メニュー
マークした行に移動したい[検索]-[マーク行へジャンプ] メニュー
カーソル位置を文字でマークしたい[検索]-[現在位置をマーク] メニュー

いつもいつも [↑] [↓] [←] [→] カーソルキーだけを使って地道に移動するのではなく、 上記のキー操作を場合によって使えるようになれば、あなたも立派な中級者です。

■ vi

vi コマンドでカーソルを上下左右にひとつ移動するには k j h l コマンドを使用します。
[↑] [↓] [←] [→] カーソルキーとほぼ同じ機能ですが、以下の2つの利点があります。

  1. 右手をホームポジションから移動しなくてよい
  2. 10j の様に数値を前置して繰り返し回数を指定できる

h j k l 以外にも、w, b, ]], } など様々なカーソル移動コマンドがあります。
以下は移動コマンドの一覧です。表の下の方ほど移動量が大きいコマンドです。

やりたいことvi コマンド
12文字右にカーソル移動したい12l (小文字のエル)
34行下にカーソル移動したい34j
単語単位で文書末尾方向にカーソル移動したいw
単語単位で文書先頭方向にカーソル移動したいb
空白で区切られた単語単位で文書末尾方向にカーソル移動したいW
空白で区切られた単語単位で文書先頭方向にカーソル移動したいB
文書末尾方向に単語末尾までカーソル移動したいe
文書末尾方向に空白で区切られた単語末尾までカーソル移動したいE
行頭にカーソル移動したい0 (数字のゼロ)
行頭の非空白文字にカーソル移動したい^
行末にカーソル移動したい$
8カラム目にカーソル移動したい8| (縦棒)
次の行最初の非空白文にカーソル移動したい[Enter] または +
前の行最初の非空白文にカーソル移動したい-
対応する半角括弧の位置にカーソル移動したい%
C/C++ の次の関数・メソッド・クラス定義位置(^\{)に移動したい]]
C/C++ の前の関数・メソッド・クラス定義位置(^\{)に移動したい[[
C/C++ の次のラベル位置に移動したい]:
C/C++ の前のラベル位置に移動したい[:
次(文書末尾方向)の空行に移動したい}
前(文書先頭方向)の空行に移動したい{
画面最上行に移動したいH
画面最下行に移動したいL
画面中央行に移動したいM
画面の上から3行目に移動したい3H
画面の下から5行目に移動したい5L
文書先頭に移動したい1G
文書先頭から12行目に移動したい12G または :12 [Enter]
文書末尾行位置に移動したいG または :$ [Enter]
現在行から100行先に移動したい:+100 [Enter]
現在行から100行前(文書先頭方向)に移動したい:-100 [Enter]
文字 a でマークした位置に移動したい`a
文字 b でマークした行に移動したい'b

■ vi上級

vi のエキスパートはカーソル移動に検索(/?nN検索、fFtT;,検索)を多用します。