问题

如何评价 vim 8.2?

回答
好的,我们来详细评价一下 Vim 8.2。

Vim 8.2 是 Vim 编辑器的一个重要版本,它在 Vim 8 的基础上引入了许多新功能、改进和bug修复,进一步巩固了 Vim 作为一款强大、高效且高度可定制的文本编辑器的地位。Vim 8.2 并非一次颠覆性的革命,而更像是一次持续的优化和完善,它使得 Vim 在日常使用中更加流畅、功能更全面,并且为未来的发展打下了坚实的基础。

为了更全面地评价 Vim 8.2,我们可以从以下几个方面进行深入分析:

一、新增和改进的核心功能:

1. `+popupwin` (弹出窗口) 支持:
详细说明: 这是 Vim 8.2 最引人注目的新特性之一。弹出窗口允许开发者和插件作者创建临时性的、独立于主编辑窗口的界面元素。这为许多高级功能提供了基础,例如:
代码补全和提示: 插件(如 `nvimcmp`,虽然不是 Vim 8.2 内置,但利用了该特性)可以更美观、更直观地显示补全建议,包含更多信息(如函数签名、文档)。
调试信息显示: 调试器插件可以弹出一个窗口显示变量的值、调用堆栈等信息。
Git 集成: Git 相关的插件(如 `vimfugitive`)可以弹出窗口显示 diff、提交历史等。
文件浏览器或快速选择菜单: 提供比传统的分屏或缓冲列表更友好的交互方式。
评价: `+popupwin` 的引入极大地提升了 Vim 在集成开发环境 (IDE) 方面的能力。它使得 Vim 能够提供更接近现代 IDE 的用户体验,并且对插件开发者来说,这是一个强大的新工具,为创建更复杂、更友好的插件提供了可能。这个特性是 Vim 8.2 向着现代化编辑器迈进的重要一步。

2. `+textprop` (文本属性) 支持:
详细说明: 文本属性允许为文本的特定范围(从一个字符到一整行)附加额外的元数据,例如:
语法高亮改进: 插件可以通过文本属性定义更复杂的语法高亮规则,例如在函数名、变量名上应用不同的高亮。
错误/警告标记: 静态分析工具(如 linters)可以通过文本属性在代码中标记出错误、警告或信息,并以不同的方式显示(例如下划线、背景色、图标等)。
链接和跳转: 可以为特定的文本片段定义链接,点击后可以跳转到其他文件或位置。
评价: `+textprop` 提供了更精细的文本控制能力,这对于代码分析、错误提示以及富文本编辑场景至关重要。它使得 Vim 能够更好地与外部工具集成,并提供更丰富的视觉反馈。

3. `+keyrep` (按键重复率) 和 `+keydelay` (按键延迟) 改进:
详细说明: 这些选项允许更精细地控制键盘的重复行为。
`'key_rep'`:允许设置一个字符在按下后开始重复之前的延迟时间,以及重复的速率。
`'key_delay'`:允许设置按下键后到第一个字符出现之间的延迟。
评价: 对于那些需要精确控制输入响应速度的用户(例如使用特殊键盘布局、游戏玩家、或者希望减少误触的用户),这些改进提供了更多的灵活性。虽然对大多数用户来说可能不是核心功能,但对于特定群体来说意义重大。

4. `+timers` (定时器) 的改进和新功能:
详细说明: Vim 8.2 对定时器进行了不少优化,并可能增加了一些新的定时器相关功能(具体细节可以参考 Changelog,但总体而言,定时器本身在 Vim 8 中已引入)。定时器允许在特定时间后执行 Vim 脚本,这为实现许多异步操作和周期性任务提供了基础,例如:
自动保存: 在一段时间不活动后自动保存文件。
后台任务: 定期运行一些检查或更新任务。
响应式 UI: 在不阻塞主线程的情况下更新 UI。
评价: 定时器是实现更高级、更异步功能的基石。Vim 8.2 对其的持续改进意味着 Vim 能够更好地处理后台任务,并为插件提供更可靠的异步机制。

5. `+virtualtext` (虚拟文本) 支持:
详细说明: 这是一个非常强大的特性,允许在行内(通常在行末)显示额外的、非插入的文本。这对于:
显示诊断信息: linters 可以在行末显示警告或错误信息,而无需使用弹出窗口或特殊字符。
显示代码相关信息: 例如函数返回类型、变量类型等。
Git 集成: 显示行级的 Git blame 信息(谁最后修改了这一行)。
评价: `+virtualtext` 是一种非常优雅的方式来丰富编辑器的信息展示能力,同时又不干扰主要的文本内容。它进一步增强了 Vim 作为“代码感知”编辑器的能力,使得开发者可以直接在代码旁边看到重要的上下文信息。

6. 性能优化和稳定性改进:
详细说明: 任何一个新版本的发布都伴随着大量的 bug 修复和性能优化。Vim 8.2 也不例外,它修复了许多已知的问题,提高了在处理大型文件、复杂配置或大量插件时的稳定性和响应速度。具体细节通常会体现在 Changelog 中对特定 bug 的修复和对某些操作的性能提升的描述上。
评价: 对于一款历史悠久且功能极其丰富的编辑器来说,持续的性能和稳定性改进至关重要。这些改进虽然不像新功能那样耀眼,但却是 Vim 能够长期保持竞争力的关键。

7. 新的 Vimscript 函数和命令:
详细说明: 每个版本都会引入新的函数和命令,以方便开发者编写更强大、更简洁的脚本。Vim 8.2 也不例外,它为 Vimscript 增添了新的工具,可能包括:
更方便的字符串处理函数。
更灵活的文件I/O 函数。
用于管理特定 Vim 特性(如弹出窗口、虚拟文本)的函数。
评价: 新的 Vimscript 功能能够降低插件开发的门槛,提高脚本编写的效率,并允许实现更复杂的功能。

二、对生态系统的影响:

1. 插件开发的催化剂: `+popupwin` 和 `+virtualtext` 的引入极大地激发了 Vim 插件社区的活力。许多流行的插件(例如用于代码补全、LSP 集成、Git 集成等)都积极地利用了这些新特性来提升用户体验。这使得 Vim 能够提供更接近现代 IDE 的功能,吸引了更多开发者转向或继续使用 Vim。
2. 向现代 IDE 靠拢: Vim 8.2 的这些新特性,特别是弹出窗口和虚拟文本,使得 Vim 在很多方面能够提供与 Visual Studio Code, Sublime Text 等现代化编辑器相媲美的体验。这标志着 Vim 正在积极拥抱现代化的开发需求,而不仅仅是停留在其经典的编辑模式上。
3. 迁移成本和兼容性: Vim 8.2 在保持向后兼容性方面做得很好。大多数为 Vim 8 编写的插件仍然可以在 Vim 8.2 上正常工作。然而,一些利用了新特性的插件可能需要 Vim 8.2 或更高版本才能运行。对于希望利用新特性的用户,升级到 Vim 8.2 是一个自然的选择。

三、潜在的缺点或可以改进的地方:

1. 学习曲线仍然存在: 尽管 Vim 8.2 引入了许多提升用户体验的新功能,但 Vim 本身的操作模式和配置的深度仍然意味着其学习曲线相对陡峭。对于新用户来说,理解其核心概念和高效使用仍需要时间和精力。
2. UI 的局限性: 尽管弹出窗口和虚拟文本极大地丰富了 Vim 的视觉表现力,但其核心的 TUI (Text User Interface) 本质决定了它在处理高度图形化、拖拽交互等方面的能力仍然有限。这并非 Vim 的设计目标,但与一些纯粹的 GUI 编辑器相比,在这方面存在差异。
3. 核心开发模式的节奏: Vim 的开发是相对缓慢且稳定的,这既是优点(稳定性)也是缺点(新技术的采纳速度可能不如一些更激进的开源项目)。尽管 8.2 版本带来了很多重要更新,但相比于一些快速迭代的编辑器,其更新周期和引入的“颠覆性”新特性可能相对保守。
4. 特定功能实现的依赖: 许多 Vim 8.2 的亮点(如代码提示、LSP 集成)都需要配合相应的插件才能实现。虽然 Vim 提供了基础框架,但最终的用户体验很大程度上取决于插件的质量和作者的实现。

总结:

Vim 8.2 是一个非常重要的版本,它在 Vim 8 的坚实基础上,通过引入如 `+popupwin`、`+virtualtext`、`+textprop` 等关键特性,显著提升了 Vim 的功能性和用户体验。这些改进使得 Vim 在集成开发环境方面更具竞争力,能够更好地支持现代化的开发工作流程。它并非一次革命性的飞跃,而是 Vim 在不断进化过程中一次重要的里程碑,它巩固了 Vim 作为一款强大、灵活且可高度定制的编辑器的地位,并为未来的发展奠定了坚实的基础。

对于 Vim 用户来说,升级到 8.2 版本通常是值得的,尤其是那些希望利用新特性来提升效率和改善开发体验的用户。它证明了 Vim 并没有停滞不前,而是在不断地适应和满足当前软件开发的需求。

网友意见

user avatar

Vim 8.2 的诸多功能其实对普通用户来讲还不能直接使用,正式发布后,我抽了几个周末利用 popup 特性,给 vim 写了一套 ui 扩展。

众所周知,vim/emacs 这类文本编辑器向来以陡峭的学习曲线而闻名,其中最影响入门者的地方其实就是太多快捷键要记忆,我曾经把我弄好的功能很强的配置共享给我的同事使用,但是他们纷纷表示记不住那么多快捷键。

我开始思考这个问题,就算是我自己,自己配置了 200+ 多项快捷键,一些不常用的也很容易忘记,经常要打开 vimrc 查看下哪个功能的快捷键是什么?spacemacs / doom-emacs 的解决方案是在编辑器下方显示一个窗口,提示快捷键:

每按一个键,就会给出下一步提示,该功能也被很多初学者所喜爱。初学者至少可以利用这个功能方便的探索一下 spacemacs/doom-emacs 里面到底有些什么功能,而不用打开配置读一半天。

而 8.2 发布后,我写了一个更好的UI系统 vim-quickui 来做这件事情(点击查看动图):

看起来不就是把 GVim 的菜单系统给移植到了终端?没那么简单:

  • GVim 的菜单仅限于 GUI 版本,终端没法使用,而 quickui 的菜单可在终端下使用。
  • 复古的 Borland / Turbo C++ 文本界面风格,对新用户友好同时保证操作效率。
  • GVim 的菜单只能用鼠标操作,没法用键盘操作,这里不但能全键盘操作,也支持鼠标。
  • 使用 H/J/K/L 等 Vim 常用键位进行移动,空格/回车进行选择,CTRL+[ 或者 ESC 放弃。
  • 移动时,最下面的命令行会显示一份迷你文档,用来对各个选项进行进一步细节说明。
  • 纯粹 VimScript,无其他依赖,不需要引入 Python。

再也不怕忘记功能键了,也不用担心装了一堆插件,不用的话自己都忘记了装过了啥,这套菜单系统可以很好的展现你的配置到底包含了什么功能。

我把它绑定到 <space><space> 上面,连续按两次空格键就出现了,有人说熟练的话,使用菜单没有快捷键高效,其实根本不会,比如打开 NERDTree,我的操作就是:空格+空格+p+n,熟练的话,瞬间就敲完了, 根本不用看上面的菜单显示啥,根本不影响你的效率,而再你记不住时,它的帮助就非常大了。

欢迎尝试:github.com/skywind3000/

安装非常简单:

       Plug 'skywind3000/vim-quickui'     

使用就是调用 quickui#menu#install 注册目录项目,quickui#menu#open 打开目录:

        " 清楚所有目录项目 call quickui#menu#reset()  " 安装一个 File 目录,使用 [名称,命令] 的格式表示各个选项。 call quickui#menu#install('&File', [              [ "&New File	Ctrl+n", 'echo 0' ],              [ "&Open File	(F3)", 'echo 1' ],              [ "&Close", 'echo 2' ],              [ "--", '' ],              [ "&Save	Ctrl+s", 'echo 3'],              [ "Save &As", 'echo 4' ],              [ "Save All", 'echo 5' ],              [ "--", '' ],              [ "E&xit	Alt+x", 'echo 6' ],              ])  " 每个项目还可以多包含一个字段,表示它的帮助文档,光标过去时会被显示到最下方的命令行 call quickui#menu#install('&Edit', [              [ '&Copy', 'echo 1', 'help 1' ],              [ '&Paste', 'echo 2', 'help 2' ],              [ '&Find', 'echo 3', 'help 3' ],              ])  " 在 %{...} 内的脚本会被求值并展开成字符串 call quickui#menu#install("&Option", [     ['Set &Spell %{&spell? "Off":"On"}', 'set spell!'],     ['Set &Cursor Line %{&cursorline? "Off":"On"}', 'set cursorline!'],     ['Set &Paste %{&paste? "Off":"On"}', 'set paste!'],     ])  " install 命令最后可以加一个 “权重”系数,用于决定目录位置,权重越大越靠右,越小越靠左 call quickui#menu#install('H&elp', [     ["&Cheatsheet", 'help index', ''],     ['T&ips', 'help tips', ''],     ['--',''],     ["&Tutorial", 'help tutor', ''],     ['&Quick Reference', 'help quickref', ''],     ['&Summary', 'help summary', ''],     ], 10000)  " 打开下面选项,允许在 vim 的下面命令行部分显示帮助信息 let g:quickui_show_tip = 1  " 定义按两次空格就打开上面的目录 noremap <space><space> :call quickui#menu#open()<cr>     

把上面这段放到 vimrc 中,然后每次需要显示菜单时连续两次空格就出现了:

嗯,差不多就是这个样子。

比起 spacemacs / doom-emacs 热键提示窗口的优势有几方面:

  1. 更符合直觉的交互方式,符合传统编辑器用户使用习惯,同样支持全程热键操作。
  2. 支持鼠标,对新人更友好,上次选中的项目会被记忆下来,下次直接回车即可。
  3. 支持 HJKL 移动更方便探索有些什么功能
  4. 下方可以显示帮助,有时候光有个名字很难知道该命令是干嘛的,下面帮助可以详细说明

希望这个插件能够丰富 Vim 的交互方式,帮大家提高 工作效率,促进配置交流,让新用户可以更容易的接受老用户的配置文件,并且轻易的探索和学习有些什么功能可以使用。

当然,对老用户而言,再也不用记忆那么多快捷键了,忘记了某些键也不用一遍遍打开 vimrc 去复习功课了。

btw 最新版支持多种边框效果和主题:

总有一款适合你。

总之,Vim 8.2 中引入的一些列基础设施,能够极大的方便 Vim 未来的交互拓展,过不了多久我们应该能从各个插件的迭代版中体验到越来越多的便利。


--

类似的话题

  • 回答
    好的,我们来详细评价一下 Vim 8.2。Vim 8.2 是 Vim 编辑器的一个重要版本,它在 Vim 8 的基础上引入了许多新功能、改进和bug修复,进一步巩固了 Vim 作为一款强大、高效且高度可定制的文本编辑器的地位。Vim 8.2 并非一次颠覆性的革命,而更像是一次持续的优化和完善,它使得.............
  • 回答
    说到 Vim,你肯定得绕不开一个话题:Esc 键。用 Vim 差不多半年了,我对它真是又爱又恨。爱它功能强大,学习曲线陡峭带来的成就感;恨它某些地方确实有点反人类,尤其是那个高高在上的 Esc 键。你想想,你键入代码、写文档,一切进行得还算顺畅。然后,你想保存,想查找,想执行命令,就得按一下 Esc.............
  • 回答
    《睡前消息》409期作为一档以“睡前”为名的时事评论节目,其内容通常以轻松幽默的风格呈现社会热点、科技动态、文化现象等话题,旨在为观众提供睡前的“信息快餐”。以下是对该期节目可能涉及的分析框架和评价方向,结合其节目特点及社会语境进行详细解读: 1. 节目核心内容与选题分析 选题热点:409期可能聚焦.............
  • 回答
    俄罗斯军队在2022年2月24日入侵乌克兰后,21天内未能占领或包围基辅,这一结果涉及复杂的军事、战略和国际因素。以下从多个维度详细分析这一现象: 1. 初期快速推进的军事目标与战略调整 初期目标的矛盾性: 俄罗斯在入侵初期(2月24日)宣称“特别军事行动”的目标是“去纳粹化”和“去俄化”,但.............
  • 回答
    新华社的《破除美国金融模式迷信,中国金融要走自己的路》一文,是近年来中国在金融领域强调自主性、独立性和战略定力的重要政策表达。该文从历史经验、现实挑战和未来战略三个维度,系统阐述了中国金融发展的路径选择,具有鲜明的现实针对性和理论深度。以下从多个角度对这篇文章进行详细分析: 一、文章背景与核心论点1.............
  • 回答
    2022年俄乌战争爆发后,中国互联网上确实出现了一些复杂的现象,既有官方立场的引导,也有民间舆论的分化。以下从多个角度分析这一时期中国互联网的乱象及其背后的原因: 一、官方立场与网络管控1. 官方舆论引导 中国政府明确表态支持乌克兰的主权和领土完整,同时强调“不干涉内政”的原则。在社交媒体和.............
  • 回答
    陈道明、王志文、陈宝国、张国立、李雪健是中国影视界最具代表性的“老戏骨”之一,他们以深厚的表演功底、多样的角色塑造和持久的行业影响力,成为中国影视艺术的中流砥柱。以下从表演风格、代表作、行业地位及艺术贡献等方面进行详细分析: 一、陈道明:历史剧的“帝王”与艺术的“多面手”表演特点: 陈道明以“沉稳.............
  • 回答
    《为战争叫好的都是傻逼》这类文章通常以强烈的反战立场和道德批判为核心,其评价需要从多个维度进行分析,包括其立场的合理性、论据的逻辑性、社会影响以及可能存在的争议。以下从不同角度展开详细分析: 1. 文章的核心立场与立场合理性 立场:这类文章的核心观点是战争本质上是道德上不可接受的,支持战争的人(尤其.............
  • 回答
    龙云(1882年-1967年)是20世纪中国西南地区的重要军阀和政治人物,被尊称为“云南王”,其统治时期(1920年代至1940年代)对云南的现代化进程和民族关系产生了深远影响。以下从多个维度对其历史地位和影响进行详细分析: 一、生平与政治背景1. 出身与早期经历 龙云出生于云南昆明,出身于.............
  • 回答
    关于“前三十年的工业化是一堆破铜烂铁”的说法,这一评价需要结合历史背景、经济政策、技术条件以及国际环境等多方面因素进行深入分析。以下从多个角度展开讨论: 一、历史背景与“前三十年”的定义“前三十年”通常指中国从1949年新中国成立到1979年改革开放前的30年。这一时期,中国在经济、政治、社会等方面.............
  • 回答
    十元左右的低档快餐店顾客以男性为主的现象,可以从经济、社会文化、消费行为、地理位置等多方面进行分析。以下从多个角度详细探讨这一现象的原因及可能的背景: 1. 经济因素:价格敏感与消费习惯 性价比优先:十元左右的快餐通常以快速、便宜、标准化为特点,符合低收入群体或日常通勤人群的消费需求。男性在职场中可.............
  • 回答
    阎学通教授对00后大学生以“居高临下”心态看待世界这一批评,可以从多个维度进行深入分析,其背后既有学术视角的考量,也涉及代际差异、教育体系、社会环境等复杂因素。以下从观点解析、合理性分析、现实背景、潜在影响及改进方向等方面展开详细探讨: 一、阎学通教授的核心观点与逻辑1. “居高临下”的具体表现 .............
  • 回答
    歼8系列战机是中国在20世纪70年代至80年代期间研制的高空高速歼击机,是当时中国航空工业的重要成果之一。该系列战机在冷战时期具有显著的军事意义,但随着技术发展和国际形势变化,其性能和作用逐渐被后续机型取代。以下从历史背景、技术特点、性能分析、发展演变、军事影响及评价等方面进行详细解析: 一、历史背.............
  • 回答
    关于苏翻译和Black枪骑兵对俄乌战争局势的立场差异,需要明确的是,这两位身份可能涉及不同的信息来源和立场背景。以下从多个角度分析他们观点差异的可能原因: 1. 信息来源与立场定位 苏翻译(可能指苏晓康,中国《经济学人》翻译团队成员): 立场:更倾向于国际法、人道主义和多边主义视角。 观点:.............
  • 回答
    由于无法直接访问《睡前消息》第409期的具体内容(可能因平台更新、用户输入误差或节目名称不明确导致无法准确检索),以下将基于对“睡前消息”类节目的常见结构和主题进行推测性分析,并提供一般性的评价框架。若您有更具体的背景信息(如节目来源、发布时间等),可补充说明以便更精准回答。 一、节目内容推测(基于.............
  • 回答
    明成祖朱棣(14021424年在位)五次北伐漠北(今蒙古高原)是明王朝巩固北方边疆、遏制蒙古势力的关键历史事件。这一系列军事行动不仅体现了朱棣的军事才能,也深刻影响了明朝的边疆政策、内政格局和历史走向。以下从历史背景、军事行动、结果评价及历史影响等方面详细分析: 一、历史背景1. 政治合法性与边疆安.............
  • 回答
    2022年的俄乌战争是21世纪最具全球影响力的冲突之一,其规模、持续时间、国际影响和人道主义灾难远超以往。以下从多个维度对这场战争进行详细分析: 一、战争爆发的背景与起因1. 历史渊源 俄乌冲突的根源可追溯至2014年克里米亚危机和顿巴斯战争,俄罗斯在2014年吞并克里米亚并支持顿巴斯分离.............
  • 回答
    关于美国国务卿布林肯和波兰总统对北约向乌克兰提供战机的表态,这一问题涉及地缘政治、军事战略、国内政治和国际关系等多重因素。以下从多个角度进行详细分析: 一、背景与核心争议1. 乌克兰的军事需求 乌克兰自2022年俄乌冲突爆发以来,面临俄罗斯的军事压力,急需先进武器装备以增强防御能力。战机(尤.............
  • 回答
    亚投行(亚洲基础设施投资银行,AIIB)在2022年俄乌冲突爆发后,确实对在俄罗斯和白俄罗斯的项目进行了暂停和审查,这一举措引发了国际社会的广泛关注。以下从背景、原因、影响及评价多个角度进行详细分析: 一、事件背景1. 俄乌冲突的国际影响 2022年2月,俄罗斯入侵乌克兰,引发西方国家对俄罗.............
  • 回答
    俄乌冲突中的俄军指挥体系和行动表现是一个复杂的问题,涉及军事战略、指挥结构、后勤保障、情报系统等多个方面。以下从多个角度对俄军指挥进行详细分析: 一、指挥体系结构1. 中央指挥链 俄军的指挥体系以中央军区(俄联邦安全局)和西部军区(负责乌克兰东部战区)为核心,由总参谋部协调。 总参.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有