基于文件长度的动态vim字体大小

前端之家收集整理的这篇文章主要介绍了基于文件长度的动态vim字体大小前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想要 vim(MacVim)默认为一个大字体的新/短文件,并随着行数的增加动态缩小到一个较小的字体(一个最小值).这可能与插件有关吗?我需要知道哪些vim概念来编写该插件

我想要这样做的原因是我喜欢用大字体编写代码,但是在文件变长之后,我宁愿眯起一点点滚动.

这是一个有趣的想法.不知道如果我使用它:-) – 但这当然是一个有趣的想法.

你不需要编写一个完整的插件,因为它需要做的就是执行一些数学.更具体地说,粗略的公式是:

在所需尺寸(S)取决于当前文件数量(n)的情况下,常数确定被认为是大文件(k,以行为单位),所需幅度(a) – 意味着尺寸变化多少 – 和最小字体大小(m).

现在我们知道,这只是一个实现它的问题.快速笔记:

获取n,我们可以调用传递“$”作为参数的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

我相信其他Vim大师可以改善这一点.无论如何,一个快速的解释:

>设置我们称之为大文件.我已经选择200行进行调试,你可能想要一个更大的数字.
>获取当前文件中的行数.
>在前面的公式中做括号.请注意,有条件涉及(如果您注意到我错过了公式中的恭喜!).如果我们有比最大常数更多的行,则返回0.否则,我们会有一个负数 – 加上一些显而易见的事情.
>在第四行,我们构建要在完成公式时执行的字符串.我选择在这里对a和m的值进行硬编码,因为它们只用了一次,很容易修改它们.这里a是5,m是11,这意味着字体将在11和16之间变化.我用于设置字体的语法对于Mac是有效的.如果另一个读者使用另一个系统,您可能需要相应地更改它.

把它放在你的.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))

猜你在找的Bash相关文章