作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Emacs 有一个有用的 transpose-words
该命令允许用户交换光标之前的单词与光标之后的单词,并保留标点符号。
例如,‘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""
和"/
。有更清洁的解决方案吗?
更新²:
:nmap gn :s,\v(\w+)(\W*%#\W*)(\w+),\3\2\1\r,<CR>kgJ:nohl<CR>
不完美,但有效。
感谢 Camflan 带来 %#
引起我注意的项目。当然,都在wiki上,但我没有意识到它可以解决 transpose-words
的精确(Emacs 完全正确)重复的问题功能。
最佳答案
这些来 self 的 .vimrc,对我来说效果很好。
" swap two words
:vnoremap <C-X> <Esc>`.``gvP``P
" Swap word with next word
nmap <silent> gw "_yiw:s/\(\%#\w\+\)\(\_W\+\)\(\w\+\)/\3\2\1/<cr><c-o><c-l> *N*
关于vim - 如何在 Vim 中模拟 Emacs 的转置词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/141372/
我是一名优秀的程序员,十分优秀!