在程序员群体中,Vim 常被誉为“编辑器之神”——它强大的键盘快捷键、高效的文本操作、可扩展的插件体系,让无数开发者为之着迷。然而,很少有人知道,这款诞生于上世纪 70 年代的经典编辑器,还隐藏着一种颇为“古老”的创意玩法:在 Vim 中制作 ASCII Art(ASCII 字符画)。近日,一段名为“Making ASCII Art in Vim”的技术演示在海外开发者社区引发热议,再次将这一小众但充满趣味的话题推向台前。

从“代码编辑”到“像素绘制”:ASCII Art 为何重回视野?

ASCII Art,简单来说,就是利用键盘上可输入的字符、数字和符号来拼凑出图像。在互联网早期,由于图形界面尚未普及,ASCII Art 曾是 BBS 论坛、电子邮件签名和早期游戏界面的主要视觉元素。随着时代的演进,这项技艺逐渐成为“复古文化”的一部分,但在 Vim 用户群体中,它依然保留着独特的生命力——因为 Vim 的网格化编辑模式、以字符为单位的光标移动,天然适合逐像素“雕琢”字符画。

此次引发关注的教程来自一位昵称为“ascii-vimmer”的技术爱好者。他在视频中展示了自己如何用 Vim 的普通模式、可视模式和替换命令,从一张简单的黑白图片出发,逐步构建出一幅包含明暗渐变的人物头像。《Making ASCII Art in Vim》这一标题简洁直白,却在短时间内吸引了超过 15 万次观看。评论区中,不少程序员感叹:“用了十年 Vim,第一次知道还能这么玩。”

核心技巧:模式切换、宏录制与“把图片当代码改”

与专门的绘图软件不同,在 Vim 中制作 ASCII Art 需要充分利用编辑器的文本操作能力。据该教程介绍,过程大致可分为三步:

第一步:图像“降维”与字符映射。 首先需要将一张位图转换为灰度值矩阵,再根据亮度级别对应到一组特定字符(例如 @ 代表深色,. 代表浅色,# 介于两者之间)。Vim 虽然没有原生图形处理功能,但可以借助外部脚本生成 ASCII 的初始“草稿”,然后导入 Vim 中进行精细调校。

第二步:利用可视模式批量替换。 选中某个矩形区域的字符后,使用 r(替换单个字符)或 :%s/ 全局替换命令,可以快速调整密度。配合 gCtrl-A 等递增操作,甚至能模拟出渐变色效果。

第三步:宏录制实现重复劳动自动化。 例如,需要将某一整行的所有 # 替换为 @,可以录制宏(qa),执行替换,再移动到下一行,然后反复播放宏(q 循环)。高手甚至能在 Vim 中实现“逐像素动画”——通过在不同缓冲区之间切换,让字符画“动起来”。

“在 Vim 里创作 ASCII Art,本质上是在和编辑器对话。”一位资深 Vim 用户评价道,“你需要理解它的模式哲学:普通模式是雕刻刀,插入模式是画笔,而可视模式则是你的视觉选区。”这种“把图片当成代码来改”的思路,恰好契合了 Vim 用户“万物皆文本”的技术信仰。

社区反响:从“效率工具”到“数字手工艺”

该教程在 Reddit 的 r/vim 板块发布后,迅速收获了两千多个点赞。有用户评论:“这让我想起了小时候在 DOS 系统里用 DEBUG 命令画图的感觉。”也有用户表示,自己一直以为 ASCII Art 只能靠笨办法一个一个敲字符,没想到 Vim 的模式操作能让效率提升这么多。

与此同时,一些 Vim 插件也因应而生。例如 vim-asciiterm 允许在编辑器中实时预览 ASCII Art 的渲染效果;vim-image2ascii 则提供一键将图片转换为字符画的功能。但更吸引人的是那种“纯手工打磨”的成就感——当你在 Vim 的纯黑终端背景中用绿色或白色字符一点点勾勒出轮廓,仿佛回到了计算机艺术的黄金时代。

编辑视角:Vim 的“反效率”浪漫

客观来说,用 Vim 制作 ASCII Art 并非最高效的方式——专门的 ASCII Art 编辑器(如 JavE)或 Python 脚本显然能更快生成结果。但 Vim 爱好者之所以乐此不疲,恰恰是因为它提供了一种“有温度的编辑体验”。在代码世界中,Vim 是追求极致效率的工具;而在 ASCII Art 的创作过程中,你放慢速度,用 Ctrl + d、Shift + v、点号重复命令去“刻画”每一行字符,这种沉浸感是自动化工具无法替代的。

正如 Vim 的创造者 Bram Moolenaar 所强调的:“Vim 应该让你在编辑时感到愉悦。”而这股 ASCII Art 热潮,恰好为这句话提供了最生动的注脚——哪怕只是一幅由 #. 组成的粗糙头像,只要是你亲手在 Vim 中“雕琢”出来的,便已经超越了字符本身,成为一段独特的数字记忆。

结语

从程序员手中的效率神器,到复古艺术的创作画板,Vim 正在以一种意想不到的方式延续着自己的生命力。《Making ASCII Art in Vim》这则不起眼的教程,或许正预示着一种趋势:在 AI 能自动生成一切的时代,人们反而更珍视那种亲手“编辑”出的、带有创作者温度的粗糙之美。如果你手边恰好开着 Vim,不妨试试输入 i 进入插入模式,然后——用 @@##.. 画下属于你的第一行像素吧。