Emacs提供了一个有用的transpose-words
命令,让您可以将光标前的单词与光标后面的单词交换,从而保留标点符号。如何在Vim中模拟Emacs的转置单词?
例如,'stack |overflow
'+ M-t ='overflow stack|
'('|
'是光标位置)。
<a>|<p>
变成<p><a|>
。
是否可以在Vim中模拟它?我知道我可以使用dwwP
,但它不符合标点符号。
更新:没有,dwwP
是真的不是办法。试想一下:
SOME_BOOST_PP_BLACK_MAGIC((a)(b)(c))
// with cursor here^
Emacs的M-T会交换b
和c
,导致(a)(c)(b)
。
什么适用/\w yiwNviwpnviwgp
。但它损坏了""
和"/
。有更清洁的解决方案吗?
Update²:
解决
:nmap gn :s,\v(\w+)(\W*%#\W*)(\w+),\3\2\1\r,<CR>kgJ:nohl<CR>
不完美的,但工程。
感谢Camflan为我带来%#
项目。当然,这一切都在wiki上,但我没有意识到它可以解决确切的(Emacs完全正确)重复transpose-words
功能的问题。
我很难用google搜索“%#”。他们在这里表示什么? – 2009-05-03 02:54:58
使用内置的Vim帮助::h/\%# – 2009-06-02 06:29:52