gpt4 book ai didi

vim - 如何在 Vim 中模拟 Emacs 的转置词?

转载 作者:行者123 更新时间:2023-12-02 05:07:26 25 4
gpt4 key购买 nike

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 会交换 bc ,结果为(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com