是否有vim命令可与一个操作员交换两个字?

是否有vim命令可与一个操作员交换两个字?,vim,Vim,例如,我想我有这个街区 if( first > second) { } 我想用一个操作符来交换这些词 if( second > first) { } 如何自然地使用vim命令?等待一种更自然的方法,这个怎么样 :map <f7> <esc>dbwPwdwbbPl<esc> :映射dbwPwdwbbPl 将光标放在上如果您想手动执行此操作,可以执行以下操作(首先将光标放在上): 这是相对直观的,但不可否认,相当复杂 您可能会将其映射到一些易于

例如,我想我有这个街区

if( first > second)
{
}
我想用一个操作符来交换这些词

if( second > first)
{
}

如何自然地使用vim命令?

等待一种更自然的方法,这个怎么样

:map <f7> <esc>dbwPwdwbbPl<esc>
:映射dbwPwdwbbPl

将光标放在
上如果您想手动执行此操作,可以执行以下操作(首先将光标放在
):

这是相对直观的,但不可否认,相当复杂

您可能会将其映射到一些易于键入的组合键:

nnoremap <key> yiwwwviwpbbbviwp
我有一个插件,允许我以这种方式更改单词


在第一个单词处按
cxiw
,然后跳转到第二个单词并按

此解决方案使用以下功能:

function! Swap()
  normal di)
  let a=split(@")
  let @b=a[2]." ".a[1]." ".a[0]
  normal %"bp
endfunction
可以映射到
gs
,例如:

nnoremap <silent> gs :call Swap()<cr>
nnoremap-gs:callswap()

这种方法的一个缺点是它比基于mappigs的解决方案更复杂。它的优点是,它将光标放在括号内的任何位置
(…)

实际上有3个单词,包括
,在第5步中看起来是“bbb”。
function! Swap()
  normal di)
  let a=split(@")
  let @b=a[2]." ".a[1]." ".a[0]
  normal %"bp
endfunction
nnoremap <silent> gs :call Swap()<cr>