sid*_*yll 18
这是一个有趣的想法.不确定我是否使用它:-) - 但这肯定是一个有趣的想法.
您不需要编写完整的插件,因为它需要做的就是执行一些数学运算.更具体地说,粗略的公式是:

如果所需的大小(S)取决于当前文档的行数(n),一个常数确定什么被认为是一个大文件(k,在行中),所需的幅度(a) - 意味着大小会有多大变化 -和最小字体大小(m).
现在我们知道了,这只是实现它的问题.快速说明:
line()函数"$"作为参数调用exec考虑到这一点,一个非常具有描述性的快速功能可以写成:
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
Run Code Online (Sandbox Code Playgroud)
我相信其他Vim大师可以改善这一点.无论如何,快速解释:
把它放在.vimrc中或从其他文件中获取它,你就可以测试了它.在一行文件中,字体设置为16.如果有39行,则大小为16,如果有40,则大小为15.如果有80行,则大小为14,依此类推.
您可能想要自动调用它,因此也要创建一个auto命令.
autocmd BufEnter * call DetermineFontSize()
Run Code Online (Sandbox Code Playgroud)
只有当您输入缓冲区时,这才会起作用,如名称所示.您可以将其更改为包含InsertLeave或类似内容,但请记住,这将生成对函数的更多调用.但不应该是性能问题.
根据需要检查:h autocommand-events并构建autocmd.
正如ZyX在评论中指出的那样,函数的最后一行可以写成:
let &guifont='Menlo:h'.float2nr(ceil((rate*5)+11))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
716 次 |
| 最近记录: |