swap : Easy swapping of text
| script karma
Downloaded by 870
Comments, bugs, improvements
script versions (upload new version)
|1. Visual mode
First select some text ( represents the highlighted area). Then press \x
[a == 123] [ a == 123 ] [a==123]
| | |
V V V
123 == a 123 == a 123==a
Note: Your selection can be loose and include white spaces at both ends.
By default the plugin acts on comparison operators
You are however allowed to specify any pivot for the swapping.
First select some text. Then press \\x
You will be asked to give a pattern (% used here)
Just testing % a percentage as a pivot
a percentage as a pivot % Just testing
You can also use V, v or ^v to select several lines (v used), then press \x
a == [123
user !~ unknown
123 == a
unknown !~ user
2. Normal mode
Swap with WORD on the right \x
# indicates the cursor position in the examples below.
zero one a_longer_word three
zero a_longer_word one three
Swap with WORD on the left \X
zero one two three
let's have some more fun
zero one two let's
three have some more fun
This plugin integrates with Tim Pope's repeat plugin. It means that you can
use . to repeat any normal mode (for now) swap mapping you just used!
For more information see: http://github.com/tpope/vim-repeat
3. Supported comparison operators
=== !== <> ==# !=# >#
>=# <# <=# =~# !~# ==?
!=? >? >=? <? <=? =~?
!~? == != >= =~ <=
+= -= *= /= %= &=
|= ^= <<= >>=
->* -> .*
> < = + - *
/ % & | ^ .
? : , '= '< '>
3.1 Custom operators
You can define your own operators by putting a similar line in your vimrc:
let g:swap_custom_ops = ['first_operator', 'second_operator', ...]
4. Custom mappings
You have the possibility to define your own custom mappings in your .vimrc:
vmap <leader>x <plug>SwapSwapOperands
vmap <leader><leader>x <plug>SwapSwapOperandsPivot
nmap <leader>x <plug>SwapSwapWithR_WORD
nmap <leader>X <plug>SwapSwapWithL_WORD
Note: You can replace \x, \\x, \X with whatever you like.
|swap.vim -> ~/.vim/plugin
swap.txt -> ~/.vim/doc
Latest version at:
Click on the package to download.
ip used for rating: 220.127.116.11
||Made the plugin mappings more flexible: you could redefine them in your .vimrc
but you don't have to
||Changed <plug>SwapSwapOperandsPivot to <plug>SwapSwapPivotOperands
because this map name caused <plug>SwapSwapOperands to wait and be very slow!
||- Fixed a bug when selection goes beyond $ (using ve=all for instance)
- Made in sort that / history is kept clean (unchanged) after using swap.vim
||- Added support for more operators (+ custom ones)
- Added partial support for the repeat.vim plugin
- Allowed all mappings to be customized
- Simplified the code
||Changed \<left>x to \X + fixed a bug when trying to swap at BOF or EOF
||Swapping of words works a treat now.
Swapping is stricter now, it is only about swapping:
Ex: a== b was transformed to b == a. In the new version it becomes:
Changed the mappings too: \x, \\x and \<left>x are used now.
think of them as of ^w x in Vim.