我想放弃使用pxCSS中的单位并转向使用em单位.此页面有一个转换公式,1/16*X其中16是基本字体大小(以像素为单位),X是要转换的字体大小.考虑到这一点,我尝试做类似的事情:
:%s/\(\d\+\)px/\=1\/16*submatch(1)."em"/gc
Run Code Online (Sandbox Code Playgroud)
但它没有按预期工作.这是我第一次在vim替换中使用表达式,所以我有点迷失.
我已将您的替换更改为以下内容:
:%s#\v(\d+)px#\=printf("%0.3fem", 1.0/16*submatch(1))#gc
Run Code Online (Sandbox Code Playgroud)
细节
#的分隔符,而不是/使它更易于阅读和修复师\v 打开非常魔法使正则表达式更具可读性(首选)Floats因为Vim的Number格式会在分割时截断.例如1/16vs1.0/16Floats和串联不混合,所以printf用来把字符串放在一起%0.3f确保小数点后的前导零和3位数有关更多信息,请参阅
:h :s
:h sub-replace-expression
:h submatch(
:h /\v
:h Float
:h Number
:h E806
:h printf(
Run Code Online (Sandbox Code Playgroud)