你们的vim配置都换成lua了吗？
年轻人不要激动，几个观点供参考： 背景：看了一下 github 国内星板，我的 Lua 排第三，应该比本题下面大部分人写的 Lua 多一点： 第一：在特定领域内，DSL（领域专用语言）往往比通用语言更高效。 还有人记得 IPython Shell 么？曾经想利用 Python 的便利性在 Shell 领域代替 bash/zsh，Python 当然是一门足够强大的通用语言，但在 shell 这个领域，它怎么着都干不过 bash/zsh ，为啥呢？因为 bash/zsh 就是为了操作各种命令和文件而设计的，命令/文件是里面的一等公民，最方便最有力的表达方式都让给了命令以及文件操作，那么做这些事情 bash/zsh 当让比 python 的描述能力更强，更清晰。 当年 IPython Shell 出来的时候，一副秒天秒地秒空气的架势要来做下一代 shell，最后也凉了。再来个 Pyton vs Matlab 的例子，Matlab 里解符号方程十分简单： 就这么两句，按回车就有结果： 而 Python 里，你用 sympy 也可以解符号方程，但是代码写起来繁琐的要死，不但要用 sympy 的方式定义符号，定义运算规则，还要你把方程整理成 xxx = 0 的形式，它才解得出来，这就是 DSL 和通用语言的区别。 同样的道理，VimScript 本身就是围绕编辑文本这一件事情设计出来的，处理这类事情自是行云流水一般的高效，比如设置快捷键在 VimScript 里面是： 而用 lua 则需要写成： 哪个更简单清晰？哪个写起来更容易？ 这并不代表 Lua 不是一门好语言，而是说在特定的领域内，DSL 语言会比通用语言更加直接高效。 再来个设置例子，用 Lua： 设置这么重要的事情，在 lua 里一眼看过去和普通代码没什么区别，经常容易同普通赋值语句混淆起来。而在 VimScript 专门给设置赋予了一个关键字 set： 编辑器里 set 有专门的高亮，而配置选项也有另外一种高亮，一眼扫过去清清楚楚。 计算机技术有很多看似不错的解决方案，往往不能很好解决实际问题，而有些看似粗糙的技术，却往往能解决实际问题，参考著名文章 Worse Is Better 。 第二：Lua 不适合写大程序 它是按照嵌入式脚本语言来设计的，适合写一些小东西，比如游戏的 UI 界面，简单的 redis 数据处理逻辑，但是 Lua 写大的东西并不适合。碎片化严重得很，在 Lua 里，定义一个类有 5+ 种方式，定义一个模块也有 5 种方法。 大部分时候只能靠编码规范来约束，不同的团队都有各自的方法来定义一个 class 或者 module 之类的东西，那么不同团队写出来的 lua 代码无法共享，无法共享意味着知识很难累积。 所以你会发现，Lua 代码写长了，就很容易散。 第三：你想只学 Lua 不学 VimScript 是办不到的 大量 lua 配置里，很多关键地方都要用 vimscript 来实现，你光学个 lua ，不了解 vim 内部机制、原理和接口，基本没可能做什么事情。 往简单的说，你在 vim 下边冒号命令行里写的其实全部都是 vimscript，你不学可能么？难道你退出 vim/nvim 也要把 :q 写成 :lua os.exit(0) 你才高兴么？  总结一下 综上，在小的事情上，Lua 的描述力赶不上 vimscript，在复杂的大的事情上，lua 又不适合写复杂的程序。还不如原有 vimscript 写配置，复杂点的插件可以用 python 开发，vim 早就支持 python 写插件了。 Lua 唯一优势就是比 vimscript 快，不过现在 vim9 的脚本速度已经超过 lua 了（非 luajit），基本不存在以前运行慢的问题了，且是强类型语言，更适合写复杂程序。 最后，我觉得 nvim 选择 lua 还不如选择内置 js，不用 v8 那么重量级，QuickJS 这类符合 ES6 标准的轻量级 js 引擎多的是，用 js 写插件比 lua 靠谱多了，至少你还能写 typescript。  -- 根本不用纠结，程序员一辈子学几十种语言不是很正常么，同范式语言入门最多 3 天，你学 Lua 的时间，够学两遍 vimscript 了，或许你只是缺一份好的 vimscript 入门教程： 传送门：韦易笑：VimScript 五分钟入门（翻译）  --