Fork me on GitHub
#vim
<
2020-10-09
>
walterl14:10:48

So <e and >e (from tpope/vim-sexp-mappings-for-regular-people) are super useful for moving elements around. Is there something similar for rearranging map items (key with its value) simultaneously? I.e. move elements around, two at a time

👀 1
nbardiuk15:10:59

nmap >p 3>e3B3>e
  nmap <p 2<e4E2<e
it is a hack - move each element of *p*air one at a time does not work if you try to move on the edge of the form

❤️ 1
walterl16:10:49

that's pretty cool!

nbardiuk16:10:16

turns out that sexp supports moving around visually selected pairs. I've created a PR for missing mapping https://github.com/tpope/vim-sexp-mappings-for-regular-people/pull/12 . If you have the mapping from the PR than swapping pairs is

nmap >p vaeE>eo<Esc>
nmap <p vaeE<eo<Esc>
selects around current element, moves to the next, visually swaps, moves cursor to the beginning of selection and exists visual mode

parrot 1
nbardiuk16:10:46

this way it works on the edges of a form

Olical21:10:49

I use the visual selection approach too.

walterl21:10:56

I have < and > vmaped; will test with those mappings removed 👍

walterl19:10:16

Hmmm... I don't seem to have such visual mode mappings by default, but this seems to do the trick 🎉:

vmap <e <Plug>(sexp_swap_element_backward)
vmap >e <Plug>(sexp_swap_element_forward)