Vim圆形浮动到小数点后一位
我正在my.vimrc中设置一个函数(特别是使用MacVim,但这对vim来说应该是通用的),以显示状态行中的文件大小(以字节、千字节和兆字节为单位)。虽然函数工作得非常完美,没有错误,但它给了我意想不到的输出!事后看来,它确实产生了它应该产生的输出,但不是我想要的输出 下面是函数:Vim圆形浮动到小数点后一位,vim,macvim,Vim,Macvim,我正在my.vimrc中设置一个函数(特别是使用MacVim,但这对vim来说应该是通用的),以显示状态行中的文件大小(以字节、千字节和兆字节为单位)。虽然函数工作得非常完美,没有错误,但它给了我意想不到的输出!事后看来,它确实产生了它应该产生的输出,但不是我想要的输出 下面是函数: “我修改了此处显示的FileSize()函数以适合我自己的偏好: " http://got-ravings.blogspot.com/2008/08/vim-pr0n-making-statuslines-that
“我修改了此处显示的FileSize()函数以适合我自己的偏好:
" http://got-ravings.blogspot.com/2008/08/vim-pr0n-making-statuslines-that-own.htm
功能!StatuslineFileSize()
let bytes=getfsize(展开(“%:p”))
如果字节<1024
返回字节。“B”
elseif(字节数>=1024)和&(字节数<10240)
返回字符串(字节/1024.0)。“K”
elseif(字节数>=10240)和&(字节数<1048576)
返回字符串(字节/1024)。“K”
elseif(字节>=1048576)和&(字节<10485760)
返回字符串(字节/1048576.0)。“M”
elseif字节>=10485760
返回字符串(字节/1048576)。“M”
恩迪夫
端功能
以下是它的基本工作方式:
round()
和trunc()
函数,但它们只会将浮点值舍入并截断为最接近的整数值,这不是我希望发生的情况。我还搜索了Google和StackOverflow以寻找解决方案,但我能找到的大部分内容涉及修改编辑缓冲区中的文本或完全不相关的问题,如Java中的舍入浮动(!!!)
我最好是寻找一个vim内置函数来实现这一点,一个la
round({expr},{prec})
或trunc({expr},{prec})
,但是如果用户定义的函数可以提供足够优雅的解决方案,那么我也完全支持。我不介意输出是否是字符串,因为我显然是从StatuslineFileSize()
返回字符串 使用带有精度说明符的printf
将结果转换为字符串,而不是string
:
return printf('%.1fM', bytes / 1048576)
德瑞普!我简直不敢相信我竟然忘了搜索
printf()
!这正是我需要的!非常感谢D