基于文件长度的动态vim字体大小
我想要
vim(MacVim)默认为一个大字体的新/短文件,并随着行数的增加动态缩小到一个较小的字体(一个最小值).这可能与插件有关吗?我需要知道哪些vim概念来编写该插件?
我想要这样做的原因是我喜欢用大字体编写代码,但是在文件变长之后,我宁愿眯起一点点滚动.
这是一个有趣的想法.不知道如果我使用它:-) – 但这当然是一个有趣的想法.
你不需要编写一个完整的插件,因为它需要做的就是执行一些数学.更具体地说,粗略的公式是: 在所需尺寸(S)取决于当前文件数量(n)的情况下,常数确定被认为是大文件(k,以行为单位),所需幅度(a) – 意味着尺寸变化多少 – 和最小字体大小(m). 现在我们知道,这只是一个实现它的问题.快速笔记: 要获取n,我们可以调用传递“$”作为参数的line()函数 考虑到这一点,一个很有说服力的快速功能可以写成: function! DetermineFontSize() let bigFile = 200 let nLines = line("$") let rate = (nLines > bigFile) ? 0 : (1-nLines/(bigFile*1.0)) exec "set guifont=Menlo:h".float2nr(ceil((rate*5)+11)) endfunction 我相信其他Vim大师可以改善这一点.无论如何,一个快速的解释: >设置我们称之为大文件.我已经选择200行进行调试,你可能想要一个更大的数字. 把它放在你的.vimrc中,或者从其他文件中获取,你可以随时测试它.在一行的文件中,字体设置为16.如果有39行,如果有40行,则大小为16,但大小为15.当有80行时,大小为14,依此类推. 你可能想自动调用它,所以也创建一个自动命令. autocmd BufEnter * call DetermineFontSize() 这只能在您输入缓冲区时正常工作.你可以改变它来包括InsertLeave或类似的东西,但请记住,这将产生更多的函数调用.不应该是性能问题. 检查:h自动命令事件,并根据需要构建autocmd. 更新 正如ZyX在评论中指出的那样,函数的最后一行可以写成: let &guifont='Menlo:h'.float2nr(ceil((rate*5)+11)) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |