17.2 Transposing Text


Transpose two characters (transpose-chars).


Transpose two words (transpose-words).


Transpose two balanced expressions (transpose-sexps).

C-x C-t

Transpose two lines (transpose-lines).

M-x transpose-sentences

Transpose two sentences (transpose-sentences).

M-x transpose-paragraphs

Transpose two paragraphs (transpose-paragraphs).

M-x transpose-regions

Transpose two regions.

The common error of transposing two characters can be fixed, when they are adjacent, with the C-t command (transpose-chars). Normally, C-t transposes the two characters on either side of point. When given at the end of a line, rather than transposing the last character of the line with the newline, which would be useless, C-t transposes the last two characters on the line. So, if you catch your transposition error right away, you can fix it with just a C-t. If you don’t catch it so fast, you must move the cursor back between the two transposed characters before you type C-t. If you transposed a space with the last character of the word before it, the word motion commands (M-f, M-b, etc.) are a good way of getting there. Otherwise, a reverse search (C-r) is often the best way. See Searching and Replacement.

M-t transposes the word before point with the word after point (transpose-words). It moves point forward over a word, dragging the word preceding or containing point forward as well. The punctuation characters between the words do not move. For example, ‘FOO, BAR transposes into ‘BAR, FOO rather than ‘BAR FOO,. When point is at the end of the line, it will transpose the word before point with the first word on the next line.

C-M-t (transpose-sexps) is a similar command for transposing two expressions (see Expressions with Balanced Parentheses), and C-x C-t (transpose-lines) exchanges lines. M-x transpose-sentences and M-x transpose-paragraphs transpose sentences and paragraphs, respectively. These commands work like M-t except as regards the units of text they transpose.

A numeric argument to a transpose command serves as a repeat count: it tells the transpose command to move the character (or word or expression or line) before or containing point across several other characters (or words or expressions or lines). For example, C-u 3 C-t moves the character before point forward across three other characters. It would change ‘f∗oobar’ into ‘oobf∗ar’. This is equivalent to repeating C-t three times. C-u - 4 M-t moves the word before point backward across four words. C-u - C-M-t would cancel the effect of plain C-M-t.

A numeric argument of zero is assigned a special meaning (because otherwise a command with a repeat count of zero would do nothing): to transpose the character (or word or expression or line) ending after point with the one ending after the mark.

M-x transpose-regions transposes the text between point and mark with the text between the last two marks pushed to the mark ring (see Setting the Mark). With a numeric prefix argument, it transposes the text between point and mark with the text between two successive marks that many entries back in the mark ring. This command is best used for transposing multiple characters (or words or sentences or paragraphs) in one go.