GNU Emacs Manual - Moving Point

Go to the first, previous, next, last section, table of contents.

## Changing the Location of Point

To do more than insert characters, you have to know how to move point (see section Point). The simplest way to do this is with arrow keys, or by clicking the left mouse button where you want to move to.

There are also control and meta characters for cursor motion. Some are equivalent to the arrow keys (these date back to the days before terminals had arrow keys, and are usable on terminals which don't have them). Others do more sophisticated things.

`C-a`
  Move to the beginning of the line (`beginning-of-line`).
`C-e`
  Move to the end of the line (`end-of-line`).
`C-f`
  Move forward one character (`forward-char`).
`C-b`
  Move backward one character (`backward-char`).
`M-f`
  Move forward one word (`forward-word`).
`M-b`
  Move backward one word (`backward-word`).
`C-n`
  Move down one line, vertically (`next-line`). This command attempts to keep the horizontal position unchanged, so if you start in the middle of one line, you end in the middle of the next. When on the last line of text, `C-n` creates a new line and moves onto it.
`C-p`
  Move up one line, vertically (`previous-line`).
`M-r`
  Move point to left margin, vertically centered in the window (`move-to-window-line`). Text does not move on the screen. A numeric argument says which screen line to place point on. It counts screen lines down from the top of the window (zero for the top line). A negative argument counts lines from the bottom (-1 for the bottom line).
`M-<`
  Move to the top of the buffer (`beginning-of-buffer`). With numeric argument n, move to n/10 of the way from the top. See section Numeric Arguments, for more information on numeric arguments.
`M->`
  Move to the end of the buffer (`end-of-buffer`).
`M-x goto-char`
  Read a number n and move point to buffer position n. Position 1 is the beginning of the buffer.
`M-x goto-line`
  Read a number n and move point to line number n. Line 1 is the beginning of the buffer.
`C-x C-n`
  Use the current column of point as the semipermanent goal column for `C-n` and `C-p` (`set-goal-column`). Henceforth, those commands always move to this column in each line moved into, or as close as possible given the contents of the line. This goal column remains in effect until canceled.
`C-u C-x C-n`
  Cancel the goal column. Henceforth, `C-n` and `C-p` once again try to stick to a fixed horizontal position, as usual.

If you set the variable `track-eol` to a non-`nil` value, then `C-n` and `C-p` when at the end of the starting line move to the end of another line. Normally, `track-eol` is `nil`. See section Variables, for how to set variables such as `track-eol`.

Normally, `C-n` on the last line of a buffer appends a newline to it. If the variable `next-line-add-newlines` is `nil`, then `C-n` gets an error instead (like `C-p` on the first line).

Go to the first, previous, next, last section, table of contents.