vimgolf的问题请指教
Please give me some advice on the problem of vimgolf
https://www.vimgolf.com/challenges/9v006233d72d000000000219
开始文件
#!/bin/bash
a = 5
b = 10
sum = $a + $b
echo $sum
mul = $a * $b
echo $mul
文件结束
#!/bin/bash
a=5
b=10
sum=$((a + b))
echo $sum
mul=$((a * b))
echo $mul
=================================
这道题的击键是26,我只得到41。
我的使用方式
:%s/ = /=/g
:%s/$a/$((a/g
:%s/$b/b))/g
我不知道如何减少击键次数。请给我一些建议。
/g
表示“对行中的每个匹配项进行替换”。每个模式只有一个匹配项,因此 /g
不是必需的:
:%s/ = /=<CR>
:%s/$a/$((a<CR>
:%s/$b/b))<CR>
您已减少到 36 次击键。
参见:help :s_g
。
在这种特定情况下,$a + $b
可以与单个模式 $.*b
匹配,因此您可以将最后两个替换融合为一个:
:%s/ = /=<CR>
:%s/$.*b/$((&))<CR>
而您的击键次数减少到 26 次。
见:help s/\&
。
https://www.vimgolf.com/challenges/9v006233d72d000000000219
开始文件
#!/bin/bash
a = 5
b = 10
sum = $a + $b
echo $sum
mul = $a * $b
echo $mul
文件结束
#!/bin/bash
a=5
b=10
sum=$((a + b))
echo $sum
mul=$((a * b))
echo $mul
=================================
这道题的击键是26,我只得到41。
我的使用方式
:%s/ = /=/g
:%s/$a/$((a/g
:%s/$b/b))/g
我不知道如何减少击键次数。请给我一些建议。
/g
表示“对行中的每个匹配项进行替换”。每个模式只有一个匹配项,因此/g
不是必需的::%s/ = /=<CR> :%s/$a/$((a<CR> :%s/$b/b))<CR>
您已减少到 36 次击键。
参见
:help :s_g
。在这种特定情况下,
$a + $b
可以与单个模式$.*b
匹配,因此您可以将最后两个替换融合为一个::%s/ = /=<CR> :%s/$.*b/$((&))<CR>
而您的击键次数减少到 26 次。
见
:help s/\&
。