基于 Vim 的窗口布局管理和用户界面实现 - Jacky Liu's Blog

基于 Vim 的窗口布局管理和用户界面实现

Jacky Liu posted @ 2010年9月24日 04:34 in Vim with tags vim 用户界面 窗口布局 , 8840 阅读

第一篇,写个关于 Vim 的。

今天花了点时间,增强了 ModuleManager 中的窗口布局类的功能。现在辅助窗口的数量已经不受限制了。

这个 Vim 界面里一共有 13 个窗口。左右各 3 个,下面 6 个,还有中间一个大的。可以同时显示很多信息。但是布局并不凌乱。实际上这个类里面定义了多个窗口布局方案,打一个命令就把所有窗口自动划分好。上面这个只是其中一种。窗口大小会根据光标的移动自动调整,使用自动命令(AutoCmd)机制。进入窗口时自动变大,离开时自动缩小。许多窗口都压到 了最小。试了一下,效果跟预期的完全一样。我表示非常地满意 :)

当然如果只是分分窗口的话并没什么太大用处。实际上整个的想法比这个要大,主要是想拿 Vim 当做一个应用程序的用户界面,这个窗口布局类只是其中一部分,算是用户界面的形式。形式有了以后就要跟功能接合起来,而功能主要依靠 Vim buffer 来实现。

Vim buffer 是在 Vim 基础上用来搭建用户界面的绝好组件。因为首先它显示了要给用户看的信息(颜色与格式在 Vim 里当然不是问题),其次,它里面定义了用户可以进行的操作(通过按键映射和自定义命令)。这不就是用户界面么?按照 Vim 的设计,按键映射和自定义命令都是跟着 buffer 走的。窗口里换了一个 buffer,操作也就跟着换一套。想想使用 IDE 的时候,你在文件目录窗口和在调试输出窗口内按 Enter 键自然具有不同的含义。有了 Vim 这种设计的强大支持以后,只需要把这些 Vim Buffer 定义成类(写成 Vim Script 类或者利用 Python 接口写成 Python 类,都可以),一个类实现一个具体功能,比如相关文件结构浏览,又比如针对主窗口内显示的内容来提取它的目录,同时再定义一套独有的操作,然后这些前台类组合在一起,加上一些后台的执行类形成用户界面,然后用户界面再跟更多,更实质性的功能类放在一起,形成整个程序。

另外要知道一点,按照 Vim 的设计,不是一个窗口只能加载一个 buffer,而是任一个窗口都能加载任一个 buffer。觉得 13 个窗口够多了吗?实际上它能加载的功能模块是根本没有数目限制的。当你看到某个 IDE 有一个很好的功能,OK,只要以 Vim Buffer 为基础再定义一个类,实现这个功能,加到用户界面里面,再给它分配个窗口就行。觉得窗口太多太乱?换个窗口少点的布局,那些 Vim Buffer 只是转为 hidden 而已,随时可以加载进窗口里,为你服务。

IDE 是一个比较典型的例子。如果我想弄个 IDE,我就要把它弄成上面的样子,但是程序开发不是我的方向,我要拿它做别的事情。

实际上在我看来,这个最大的意义在于显示了技术是怎样能帮你省钱的,要显示同样多的信息,并不用跟一般操盘的一样搞个三四台显示器放在面前,可能还要架起来。很好很好,以后的外部程序界面就用它 !:)

Avatar_small
vimer 说:
2014年3月24日 20:36

你好,我初步接触vim,最近一直在找vim布局方面的资料。偶然看到你这个,不知你具体是怎么实现的?能分享下吗?打一个命令就把所有窗口自动划分好,那么能初始化每个窗口的显示内容吗(比如窗口1,我要Taglist;窗口2,我要buffer……)?

Avatar_small
Jacky Liu 说:
2014年3月28日 02:07

@vimer: 当然,一般地讲实现方法就是 VimScript。用 VS 写脚本的话,在 Vim 里没有什么做不到的事,你说的那些当然是可以的。

Avatar_small
run 3 说:
2018年10月25日 10:09

实际上整个的想法比这个要大,主要是想拿 Vim 当做一个应用程序的用户界面,这个窗口布局类只是其中一部分,算是用户界面的形式。形式有了以后就要跟功能接合起来,而功能主要依靠 Vim buffer 来实现。...

Avatar_small
american military un 说:
2022年8月26日 00:55

American Military University | Online Degrees & Certificates 2021. Any mobile device that can access email can receive the forwarded emails described in the above section. American Military University. 111 W. Congress Street. The AMU student login portal is a popular website dating back from 1991. american military university login The site holds a lot of benefits to students globally. The University provides the best.

Avatar_small
UK Board Question Pa 说:
2022年8月29日 21:37

UK Board 10th Previous Question Paper are very important for the Preparation of Public Exam of UBSE for the Students. 10th Students of can easily get their Latest and most valuable Mock Test Paper from this website. UK Board Question Paper Students only have to Download the UBSE 10th Mock Test Paper 2023 for all the important subjects are available Including the Hindi, English, Social Science, Mathematics, Science, Home Science, Sanskrit, Painting etc. Boardmodelpaper.com Provide UBSE Board 10th Class Latest and Last Year Exam Study Material for Syllabus, Question Paper etc, Hindi, English Medium Pdf Format.


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee