[VimGolf] 把单词括起来
题目链接
题目说明
把单词括起来。
开始文件
one two
three
结束文件
(one) (two)
(three)
最佳分数
14
我的分数
16
:%s/\w*/(&)/g<CR>ZZ
第一次尝试
直接替换。
:%s/\w*/(&)/g<CR>ZZ
16 分,差 2 分。但应该优化不了了。
第二次尝试
没想到其他方法。
@_mhinz_
qqce()<Esc>PWq2@qZZ
15 分。用宏实现的,好像也不是很复杂。ce()<Esc>P
可以在单词两边添加括号,用 cw
也可以,这是一个比较实用的操作。
第三次尝试
又想了想,没想到什么地方可以优化,可能又是完全不同的方法。
@udioica
cw(<C-R><C-O>")<Esc>w.w.ZZ
14 分。又用了一个很少见的用法,如果不加 <C-O>
,重复的时候粘贴的就都是第一次复制的 one 了,加了 <C-O>
,每次粘贴的就会是 cw
复制的单词,具体帮助见 :h i_Ctrl-R_Ctrl-O
。
最佳操作
@udioica
cw(<C-R><C-O>")<Esc>w.w.ZZ
实用操作
@_mhinz_
qqce()<Esc>PWq2@qZZ
15 分。只比最佳操作多 1 分,但更灵活,不受替换单词数限制。
:%s/\w*/(&)/g<CR>ZZ
16 分。更通用灵活,也好理解。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。