我希望不再使用我的CSS中的px
单元,而是转向使用em
单元。 This page有一个转换公式1/16*X
其中16是基本字体大小(以像素为单位),X是要转换的字体大小。考虑到这一点,我尝试了类似的事情:
:%s/\(\d\+\)px/\=1\/16*submatch(1)."em"/gc
但它没有按预期工作。这是我第一次在vim替换中使用表达式,所以我有点迷失。
答案 0 :(得分:5)
我已将您的替换更改为以下内容:
:%s#\v(\d+)px#\=printf("%0.3fem", 1.0/16*submatch(1))#gc
详细
#
代替分隔符/
,以便于阅读和修复分部\v
打开非常魔法让正则表达式更具可读性(首选)Floats
,因为Vim的Number
格式会在分割时截断。例如1/16
vs 1.0/16
Floats
并且串联不混合,因此请使用printf
将字符串放在一起%0.3f
确保小数点后的前导零和3位数有关详细信息,请参阅:
:h :s
:h sub-replace-expression
:h submatch(
:h /\v
:h Float
:h Number
:h E806
:h printf(
答案 1 :(得分:2)
答案 2 :(得分:0)
:h sub-replace-special
阅读完毕后,您基本上需要将替换部件调整为
:%s/\(\d\+\)px/\=1\/\=16*submatch(1)."em"/gc