Vim:反转字符串(按字词)

时间:2011-04-03 20:52:17

标签: regex string vim words

这是我的字符串:

"this is my sentence"

我想有这个输出:

"sentence my is this"

我想在一行(在缓冲区中)选择几个单词并逐字反转。

任何人都可以帮助我吗?

4 个答案:

答案 0 :(得分:16)

答案 1 :(得分:1)

也许:

:s/\v(.*) (.*) (.*) (.*)/\4 \3 \2 \1/

当然,你可能需要在第一部分更具体地找到那个特定的句子。通常,您可以将匹配组称为\ number,\ 0是整个匹配。

答案 2 :(得分:1)

这是通过调用Ruby来实现的方法。选择要反转的行后,可以在命令模式下执行此操作以替换它:

!ruby -e 'puts ARGF.read.strip.split(/\b/).reverse.join'

答案 3 :(得分:1)

我自己找到了解决方案,感谢您的回答和大量尝试:)

这有效:

function! Test()
  exe 'normal ' . 'gv"ay'
  let r = join(reverse(split(getreg('a'))))
  let @a = r
  exe 'normal ' . 'gv"ap'
 endfunction

没想到我能够编写这样的函数:)