'abc defg hij'
变为'jih gfed cba'
。我想出的解决方案是join(reverse(split(l:text, '.\zs')), '')
还有更优雅的解决方案还是应该坚持我提出的解决方案?
#1 楼
您的解决方案非常优雅!如果您使用的是基于Unix的环境,则可以选择:!!rev
#2 楼
来自Wikiavnoremap <Leader>r c<C-O>:set revins<CR><C-R>"<Esc>:set norevins<CR>
有关更多信息,请参见:
:h revins
#3 楼
如果使用的是类似Unix的系统,请在vim中键入ex-command:%! rev
评论
这取决于您所说的“优雅”。如果您要的是,则没有专用于反转字符串的内部函数。如果要通过对内部函数的两次或更多次调用来执行此操作,而又不执行其他语句,那似乎也不可能。您当前的解决方案既优雅又惯用。
跳过“。”在拆分部分。
@SatoKatsura实际上,我认为它效率更高,因为regexp引擎不需要匹配任何东西。此外,这是文档中的首选方法。
@ChristianBrabandt根据手册,没有{keepempty}选项的split()应该在开头删除一个空项目,在结尾删除一个空项目。当前,它会删除所有空项目,包括列表中间的项目(如果您问我,它比记录的行为更有用,但可能不是)。我认为最近在vim_dev上对此进行了讨论。