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

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

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

第一篇,写个关于 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.

Avatar_small
anonymous 说:
2023年9月28日 15:46

It is somewhat fantastic, and yet check out the advice at this treat. Deltona Exterminator

Avatar_small
anonymous 说:
2023年10月17日 20:17

Welcome to the party of my life      here you will learn everything about me. Home Renovations Orlando

Avatar_small
anonymous 说:
2023年12月04日 02:04

Amazing, this is great as you want to learn more, I invite to       This is my page. Virtual CPA Services

Avatar_small
anonymous 说:
2023年12月06日 20:25

I should assert barely that its astounding! The blog is informational also always fabricate amazing entitys. hillock green promotion

Avatar_small
anonymous 说:
2023年12月28日 22:16

I should say only that its awesome! The blog is informational and always produce amazing things. best iptv uk

Avatar_small
anonymous 说:
2023年12月29日 23:11

Find the best essays on     is my friend's profile page. IT Support

Avatar_small
anonymous 说:
2023年12月29日 23:57

I understand this column. I realize You put a many of struggle to found this story. I admire your process. women's novelty underwear

Avatar_small
anonymous 说:
2024年1月02日 13:37

The best article I came across a number of years, write something about it on this page.  Cuckold

Avatar_small
anonymous 说:
2024年1月09日 15:05

مؤشر كفو بوت كفو منارة كفو منصة كفو بوت تداول آلي مؤشر السوق مؤشر تداول اقوى منتجات تداول في العالم من شركة كفو بوت القابضة بوت تداول

Avatar_small
anonymous 说:
2024年1月13日 22:04

For true fans of this thread I will address      is a free online! buy 500 instagram followers

Avatar_small
anonymous 说:
2024年1月23日 15:11

تاجير مولدات كهرباء بيع وشراء صيانة احترافية عقود صيانة سنوية المتحدة بلاتينيوم مولدات كهرباء طاقة احترافية شراء مولدات

Avatar_small
anonymous 说:
2024年1月23日 15:16

It is somewhat fantastic, and yet check out the advice at this treat. Subtle permanent makeup

Avatar_small
Clay Lowe 说:
2024年2月12日 03:12

This is very appealing, however , it is very important that will mouse click on the connection: GE Monogram refrigerator repair Newport


登录 *


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