volni
volni

Reputation: 5366

Vim: how do I swap two characters?

Is there a fast command to change

Cnotrol

to

Control

Upvotes: 69

Views: 23593

Answers (4)

kongo2002
kongo2002

Reputation: 1024

You can also just use Xp with the cursor being on the second character. That way you stay on the same position without defining a new mapping.

Upvotes: 24

Jörn Horstmann
Jörn Horstmann

Reputation: 34024

If you have some common missspellings you can also use the abbreviation feature to correct these as you type. For example, I often mistype 'String' as 'Stirng', the following command fixes these while typing:

inoreab <buffer> Stirng String

Upvotes: 5

CTT
CTT

Reputation: 17631

xp

This swaps the current character with the next.

Upvotes: 102

Mark Rushakoff
Mark Rushakoff

Reputation: 258288

While in normal mode, with your cursor on top of the first character to swap, you can type xp to delete one character and put it after the cursor, effectively swapping the two characters.

One possibly useful command (taken straight from the Vim page on swapping) would be

:nnoremap <silent> gc xph

to map gc (or another command of your choice) to swapping two characters. Note that the h simply moves the cursor back to its original position, on top of the first of the two characters to be swapped.

Upvotes: 116

Related Questions