为 vim 创建一个前端

标签 c user-interface vim

<分区>

我是 vim 的 super 粉丝,我每天都用它来完成几乎所有的编辑任务。我意识到 vim 是为在终端中使用而设计的,这很棒,因为它可以在没有桌面环境等的服务器上使用。 但我也喜欢漂亮的应用程序,具有简洁的图形界面和附加功能,如项目或 ftp 客户端(我知道几乎所有东西都有 vim 插件,但我更喜欢 IDE 提供的舒适性),所以我用 pretty 搜索类似 vim 的替代品图形用户界面。显然,我遇到了 Sublime Text,它几乎是完美的,但缺少 vim 的一些功能。这让我想到,是否可以获取 vim 的源代码并为其构建一个漂亮的前端?嗯..当然有可能,但是我的问题是,这有多困难和耗时,什么是最好的方法?还是已经有这样的项目我还没有找到?

感谢您的回答!

最佳答案

至少有 one IDE built around Vim .它带有基于 GUI 的文件树和符号树以及其他一些优点,但编辑器组件仍然是普通的 Vim,因此在外观和感觉方面没有太多“改进”。

在 Mac OS X 上,MacVim 很好地集成在整个 Mac 用户体验中( native 快捷方式、.app 包……),但它仍然是 Vim。甚至还有一个提供“本地”文件抽屉的 fork 。也没有什么“改进”可言。

据我所知,除了 Linux/Windows 上的 GVim 之外,这些是在 GUI 端完成工作的唯一示例。等待!还有一个最近基于 QT 的项目。

无论如何,这些项目所做的是将各种 GUI 小部件“栓接”到 Vim 核心并将它们绑定(bind)到内部内容。您似乎想到的是完全不同的事情。你没有准确解释你想要什么,所以我不得不推断一下。我想您可能会喜欢:

  • 圆角
  • 阴影
  • 渐变
  • 动画
  • GUI 主题
  • 鼠标友好
  • 平滑滚动

我不熟悉 Vim 的内部结构,但我很确定破解所有这些方面需要大量工作。一个简单的事实是 Vim,无论是在 shell 中还是作为 GVim/MacVim,用文本绘制一切,有一个相当老式的输入系统或者甚至不是多线程的,这使得 巨大 挑战,IMO。


关于你的问题......

您询问如何或是否有可能为 Vim 构建一个“漂亮”的 GUI,并且您建议将 ST2 作为基准。

首先,并不是每个人都对 ST2 本身或其外观有很高的评价。一方面,我认为这是用户体验/视觉设计方面的噱头和不一致的垃圾,而且总体上是一个功能不足的编辑器。我很难想象为什么有人会认为它在任何方面都比 Vim “更好”。

此外,并不是每个人都认为 Vim 或 GVim 的设计/用户体验很糟糕。我敢打赌大多数 vimmers 实际上喜欢它的本来面目。基于文本的 UI 对我们很多人都有值(value),我不认为我是唯一一个不认为向 Vim 添加渐变、圆角和阴影会使它以任何方式变得更好的人。当然,我可能是错的。正如您所写,一个 vim 的优势在于您可以在终端中使用它。您的项目 - 或者我认为是您的项目 - 听起来很像是向 GUI Vim 添加了很多东西,而这些东西在终端 Vim 中毫无意义。对我来说,将两者分离听起来是一个非常糟糕和浪费的想法。

如果您真的想让 Vim 变得更好,我可以建议一些其他方面吗?统一的插件 API、更好的外部语言 API、多线程、现代化输入系统……还有很多工作要做。我想说这比添加毫无值(value)的养眼糖果重要得多。

为了启动建设性讨论,您应该真正提供:

  • 您希望在 vim 中看到的那些细节的注释列表,
  • 关于为什么这些细节会被视为“改进”的合理论据,
  • 实现思路。

哦! SO 绝对不是讨论此类事情的合适场所。

关于为 vim 创建一个前端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244654/

相关文章:

vim - 如何使用bear和make自动创建json编译数据库?

vim - :edit in VIM 上的递归制表符完整文件名

c++ - 使用 g++ 链接到外部库

POSIX 线程的自定义属性

c - 在 C 中分配和使用对齐的 double 组

java - 在 GWT 中将数据绑定(bind)到 UI

java 从另一个线程更新 UI 组件

windows - 如何编写函数或宏以将参数发送到 gVim for Windows 中的系统调用?

c - 如何在C中找到所有可能的选项?

android - 通过足够快地单击按钮两次来绕过模态 Android 对话框?