gVim 启动时窗口自动居中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gVim 启动时窗口自动居中相关的知识,希望对你有一定的参考价值。

最近折腾 vim, 除了配置巨麻烦外, 另一个很蛋疼的就是窗口位置问题了, 折腾了半天无法启动时自动居中, 找遍各地也只有保存上次位置, 下次启动时恢复的方法 废话不多说, 直接上代码, 丢到 vimrc 中即可:

function WindowCenterInScreen()
    set lines=9999 columns=9999
    let g:windowsSizeFixX = 58
    let g:windowsSizeFixY = 118
    let g:windowsScaleX = 7.75
    let g:windowsScaleY = 17.0
    let g:windowsPosOldX = getwinposx()
    let g:windowsPosOldY = getwinposy()
    let g:windowsScreenWidth = float2nr(winwidth(0) * g:windowsScaleX) + g:windowsPosOldX + g:windowsSizeFixX
    let g:windowsScreenHeight = float2nr(winheight(0) * g:windowsScaleY) + g:windowsPosOldY + g:windowsSizeFixY
    set lines=30 columns=108
    let g:windowsSizeWidth = float2nr(winwidth(0) * g:windowsScaleX) + g:windowsSizeFixX
    let g:windowsSizeHeight = float2nr(winheight(0) * g:windowsScaleY) + g:windowsSizeFixY
    let g:windowsPosX = ((g:windowsScreenWidth - g:windowsSizeWidth) / 2)
    let g:windowsPosY = ((g:windowsScreenHeight - g:windowsSizeHeight) / 2)
    exec ‘:winpos ‘ . g:windowsPosX . ‘ ‘ . g:windowsPosY
endfunc
au GUIEnter * call WindowCenterInScreen()

几个 magic number 的解释:

  • windowsSizeFixX/Y

    系统窗口边框的大小, 像素为单位

  • windowsScaleX/Y

    单个字符的平均宽高, 像素为单位

    可以把窗口最大化, 计算一下总像素和总字符数, 除法一下就好了

在相同 DPI 的屏幕下, 无论什么分辨率都能自动居中

不同 DPI 的屏幕下, 需重新计算那几个 magic number

来源:http://zsaber.com/blog/p/14

以上是关于gVim 启动时窗口自动居中的主要内容,如果未能解决你的问题,请参考以下文章

如何在Vim / Gvim中的光标下编辑文件名,当它以/ cygdrive /在Windows中启动时

关于Gvim中textwidth被自动设置成78造成输入时自动换行的问题

gvim taglist 当前窗口

使用 JavaFX 缩放窗口时自动将程序内容居中

html 有关如何在任何页面上插入Nuvo Express按钮的小片段。此按钮居中对齐,并在新窗口中打开目标URL。

WPF 窗口居中 & 变更触发机制