最近折腾 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

最新文章

  1. yii2获取登录前的页面url地址--电脑和微信浏览器上的实现以及yii2相关源码的学习
  2. PostGIS导入导出SHP文件常用命令
  3. hive查询
  4. nodejs简易实现一下bigpipe
  5. Excel插件类库的设计思路
  6. codeforces 615D - Multipliers
  7. Unity3d 调用C++的DLL
  8. Mysql常用命令和常用函数
  9. ExecuteReader: CommandText 属性尚未初始化
  10. 使用react-router setRouteLeaveHook的钩子函数
  11. ZKWeb网页框架2.0正式发布
  12. 51 nod 1297 管理二叉树
  13. java jdk动态代理(proxy)
  14. MySQL之视图、触发器、事务、存储过程、函数
  15. [转]国家税务总局:个税专项附加扣除APP正式启用!(附操作指南)
  16. CentOS7.5下安装、配置MySql数据库 --CentOS7.5
  17. 走进JDK(十一)------LinkedHashMap
  18. 使用Spring JPA中Page、Pageable接口和Sort类完成分页排序
  19. 看 Netty 在 Dubbo 中如何应用
  20. Scala学习之路 (一)Scala的安装

热门文章

  1. 微信小程序语音识别
  2. Uniform Distribution均匀分布
  3. Creating a Cron Job in K8S
  4. vue 一开始
  5. 前端PHP入门-018-内置函数之文件包含函数
  6. [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释
  7. Shell编程——bash基础知识
  8. 搭建Elasticsearch5.6.8 分布式集群
  9. CodeForces 869B
  10. 【洛谷 P3338】 [ZJOI2014]力(FFT)