単に文字を挿入するだけでなく、ポイントを移動させる方法を知っておく必要があります(ポイントを参照)。キーボードコマンドの C-f、C-b、C-n、C-p は、それぞれポイントを右、左、下、上に移動させます。また、ほとんどのキーボードに搭載されている矢印キー(RIGHT、LEFT、DOWN、UP)を使ってポイントを移動させることもできます。しかし、多くのEmacsユーザーは、矢印キーがある場所まで手を動かす必要があるため、コントロールキーを使うよりも矢印キーを使う方が時間がかかると感じています。
また、マウスの左ボタンをクリックして、ポイントをクリックした位置に移動させることもできます。Emacsでは、より高度な方法でポイントを移動させる、さまざまな追加のキーボードコマンドも提供されています。
1文字分進む (forward-char)。
このコマンド (right-char)
は、ポイントが右から左へ記述される段落内にある場合を除き、C-f と同様に動作します(双方向編集を参照)。
1文字分戻る (backward-char)。
このコマンド (left-char) は、現在の段落が右から左への記述である場合を除き、C-b と同様に動作します(双方向編集を参照)。
1画面分下に移動します (next-line)。このコマンドは水平位置を維持しようとするため、ある行の途中で開始した場合、次の行の途中に移動します。
1画面行分上に移動します (previous-line)。このコマンドは、C-n と同様に行内での位置を保持します。
行頭に移動 (move-beginning-of-line)。
行の末尾に移動 (move-end-of-line)。
1単語分進みます (forward-word)。Wordsを参照してください。
このコマンド (right-word) は M-f
と同様に動作しますが、現在の段落が右から左へ記述されている場合は、後方に1単語分移動します。双方向編集を参照してください。
1単語分戻る (backward-word)。Wordsを参照。
このコマンド (left-word) は M-b
と同様に動作しますが、現在の段落が右から左へ記述されている場合は、前方 に1単語分移動します。双方向編集 を参照してください。
画面上のテキストを移動させずに、ウィンドウの中央にあるテキスト行の左端にポイントを再配置します。それ以降の連続した呼び出しでは、最上行の左端、最下行の左端というように、循環的にポイントを移動させます
(move-to-window-line-top-bottom)。
数値引数は、ウィンドウの上端から下方向に数えて、どの画面行にポイントを配置するかを指定します(0は最上行を意味します)。負の引数は、下端から上方向に行を数えます(−1は最下行を意味します)。数値引数の詳細については、数値引数を参照してください。
バッファの先頭に移動します (beginning-of-buffer)。数値引数 n を指定すると、先頭から n/10
の位置まで移動します。グラフィカルディスプレイでは、C-HOME でも同様の動作をします。
バッファの末尾に移動します (end-of-buffer)。グラフィカルディスプレイでは、C-END も同様の動作をします。
ディスプレイを1画面分前方にスクロールし、必要に応じて画面上のポイントを移動させます(scroll-up-command)。スクロールを参照してください。
1画面分後ろにスクロールし、必要に応じて画面上のポイントを移動させます(scroll-down-command)。スクロールを参照してください。
数値 n を読み込み、ポイントをバッファ位置 n に移動します。位置 1 はバッファの先頭です。ポイントがバッファ内の数値上にあるか、あるいはその直後にある場合、それが n のデフォルトとなります。これを使用するには、ミニバッファに RET と入力してください。また、M-g c に数値のプレフィックス引数を指定することで、n を指定することも可能です。
数値 n を読み込み、ポイントを行番号 n (goto-line) の先頭に移動します。行 1
はバッファの先頭です。ポイントがバッファ内の数値上にあるか、あるいはその直後にある場合、それが n
のデフォルトとなります。これを使用するには、ミニバッファに RET と入力してください。また、M-g M-g に数値のプレフィックス引数を指定することで、n
を指定することも可能です。単純なプレフィックス引数を指定した場合の M-g M-g の動作については、バッファの作成と選択 を参照してください。あるいは、コマンド
goto-line-relative
を使用して、狭められたバッファのアクセス可能な範囲に対する相対的な行にポイントを移動することもできます。
goto-line には独自の履歴リストがあります(ミニバッファ履歴を参照)。ユーザーオプション goto-line-history-local
をカスタマイズすることで、すべてのバッファで共有する単一のリスト(デフォルト)か、バッファごとに個別のリストのいずれかを設定できます。
数値 n を読み込み、現在の行の列 n に移動します。列 0 は最も左側の列です。接頭辞引数を指定して呼び出された場合は、その引数の数値で指定された列番号に移動します。
現在のポイント列を、カレントバッファの半永続ゴール列 (set-goal-column) として使用します。半永続ゴール列が有効な場合、C-n、C-p、<prior>、および<next>は、垂直方向に移動した後、常にこの列、あるいは可能な限りその付近へ移動しようとします。ゴール列は、キャンセルされるまで有効のままとなります。
ゴール列をキャンセルする。以降、C-n と C-p は通常通り、水平位置を維持するようにする。
バッファ内のテキスト行がウィンドウの幅を超える場合、Emacsは通常、それを2つ以上のスクリーン行(別名ビジュアル行)にわたって表示します。利便性のため、C-nとC-pはポイントをスクリーン行単位で移動させ、対応するキーであるdownとupも同様の動作をします。変数line-move-visualにnilを設定することで、これらのコマンドを論理行(すなわちバッファ内のテキスト行)に従って移動させるように強制できます。論理行が複数のスクリーン行にまたがる場合、カーソルはその追加のスクリーン行をスキップします。詳細については、継続行を参照してください。line-move-visualなどの変数の設定方法については、変数を参照してください。
C-n や C-p とは異なり、行単位で動作する Emacs
コマンドの多くは、論理 行単位で動作します。例えば、C-a
(move-beginning-of-line) や C-e (move-end-of-line)
は、それぞれ論理行の先頭と末尾に移動します。C-n や C-p のように、画面行単位で動作するコマンドがある場合は、その都度明記します。
line-move-visual が nil
の場合、変数 track-eol に nil
以外の値を設定することもできます。すると、C-n と C-p
は、論理行の末尾から開始する場合、次の論理行の末尾に移動します。通常、track-eol は
nil となります。
C-n は、バッファの最終行で使用すると、通常はバッファの末尾で停止します。ただし、変数 next-line-add-newlines に nil
以外の値を設定すると、バッファの最終行にある C-n は末尾に追加の行を作成し、そこに移動します。