如何在Vim中翻转一个单词?最好使用正则表达式或正常模式命令,但也欢迎其他方法:
word =>卓尔
谢谢你的帮助!PS:我在Windows XP中
Python内置在我的vim中,但不支持Perl.
这是另一个(pythonic)解决方案,基于它的工作原理:
:echo join(reverse(split('hello', '.\zs')), '')
olleh
Run Code Online (Sandbox Code Playgroud)
如果要替换缓冲区中的所有单词,
:%s/\(\<.\{-}\>\)/\=join(reverse(split(submatch(1), '.\zs')), '')/g
Run Code Online (Sandbox Code Playgroud)
这首先要在单词中创建一个字符列表,然后将其反转并连接起来形成单词.substitute命令查找每个单词,然后将单词传递给表达式并将结果用作替换.
此提示可能会有所帮助:http : //vim.wikia.com/wiki/Reverse_letters
它说:
只需启用视觉模式 (v),突出显示您想要反转的字符,然后点击\is
。对于单个单词,您可以使用 vw(或 viw):viw\is
vnoremap <silent> <Leader>is :<C-U>let old_reg_a=@a<CR>
\:let old_reg=@"<CR>
\gv"ay
\:let @a=substitute(@a, '.\(.*\)\@=',
\ '\=@a[strlen(submatch(1))]', 'g')<CR>
\gvc<C-R>a<Esc>
\:let @a=old_reg_a<CR>
\:let @"=old_reg<CR>
Run Code Online (Sandbox Code Playgroud)
评论中有更多解决方案。
归档时间: |
|
查看次数: |
5150 次 |
最近记录: |