【解决方案】Sublime Text 4 按下 Esc 键后无法输入任何内容
在最后编辑博客内容时,我的 Sublime 版本为 4180。
我基本用 Sublime Text 4 替代了系统自带的 Notepad,我用它编辑任何东西(除了代码,手动狗头)。
开始我怀疑是 Package Control 安装了过多依赖导致的兼容性问题,因为我使用 2,3xxx 版本时没遇到过这个问题,由于 Sublime 多次更新,我的 Package Control 再次从命令面板消失,
而它又没有影响需要赶 DDL 的工作,就一直拖着没有解决,因此它对我的纯文本编辑造成了很大的影响和困扰。
如果你也遇到了这个问题,这篇文章解决了一切关于 Sublime Text 更新后令你头疼的事,并解释了具体原因。
如果你的 Package Control 也消失了
我在外网查阅了大量论坛、Issue讨论和官方公告,整理出了所有有效的解决方案,请阅读这篇文章:【解决方案】Windows 环境 Sublime Text 4 中缺少 Package Control。
如果你按下 Esc 后也无法键入任何内容
光标改变
解决方法
在删除 Packages 无果后,我的检索导向 Reddit 的这篇讨论 sublime press key "escape" can't type anything。
-
偏好设置 -> 设置
Preferences -> Settings -
将 Vintage 添加到用户设置(右栏)的 ignored_packages 字段中
{ "ignored_packages": [ "Vintage", ], }
-
关闭所有 Sublime 窗口,重启程序
禁用它会有什么问题或丢失什么功能吗?
Vintage 是官方推出的开源 vi 模式编辑包,换言之是能在终端中编辑文件的文本编辑器,在没有 GUI 的操作系统中被广泛使用(如 Linux),它包含了许多与现代文本编辑器完全不同的快捷键。
如果你本身不知道 vi,禁用它不会丢失你需要的任何功能,开启它反而会降低你在 Sublime 的使用体验。
什么是 Vintage Mode
这是 Sublime Text 给出的官方文档 Vintage Mode,也可以阅读我经过泛读后与自身掌握知识结合的总结:
Vintage Mode 直译过来是 “复古模式”,它允许您将 vi 的命令模式与 Sublime Text 的功能(包括多项选择)结合起来。这是 Sublime HQ Pty Ltd 公开的 Vintage 仓库。
如果你是 Sublime Text 的新用户,它默认是禁用的会存在于 ignored_packages 中。开启它时,如果你键入了 Esc 便会进入 vi 的命令模式,
它包括大多数基本操作:d(delete/删除)、y(copy/复制)、c(change/更改)、gu(lower case/小写)、gU(upper case/大写)、g~(swap case/交换大小写)、g?(ROT13加/解密)、<(unindent/取消缩进) 和 >(indent/缩进) 等等。
它默认以插入模式启动,也就是我们正常的文本编辑模式,当我们键入 Escape,就会进入命令模式,可以通过在偏好设置的设置中用以下属性改变它:
// 默认: true, 设置为 false 即默认以命令模式启动 Sublime
"vintage_start_in_command_mode": true
在命令模式中,我们可以如终端那样通过 h(向左移动)、j(向上移动)、k(向下移动)、l(向右移动) 操作光标,它们并没有单词实际意义,仅仅是为有意义的快捷键单词缩写妥协,并且是键盘上连续的四个按键。
在命令模式中,我们也可以通过 i(insert/在光标前插入)、a(append/在光标后插入)、o(open/在下一行插入)来恢复我们正常的文本编辑模式(插入模式)。
它在 Windows 和 Linux 中默认禁用了某些会冲突的被 Ctrl 修饰的快捷键,比如 Ctrl + R (Redo/重做),我们可以新增或修改偏好设置的设置来开启它:
// Windows/Linux 默认: false; MacOS 默认: true; 设置为 true 在 Windows/Linux 中启用
"vintage_ctrl_keys": true
vi 编辑器是什么?
如果你使用过没有 GUI 的 Linux 系统,那么很可能你使用过它。
在刀耕火种的年代,我们没有 IDE/IDEA,没有 Sublime Text/Notepad++,甚至没有带 GUI 的记事本程序。
但文本编辑的需求从未消失,vi 是 Unix 上的标准编辑器,直到在 20 世纪 90 年代末和 21 世纪初,它逐渐被开源程序 vim (vi imitation, 后更名为 improved) 替代,如今,大部分人提及或在现代操作系统中使用 vi 命令时,基本默认指的是 vim 编辑器了。
布拉姆·穆伦纳尔 (Bram Moolenaar) 和 vim
相信不少编码从业者看过2023年8月份 《编辑器之神 Vim 之父,Bram Moolenaar 逝世》 的新闻,vim 正是这位杰出的荷兰软件工程师所创造的,
他对开源社区做出了卓越的贡献,并以一个 coder 的身份,将一生致力于乌干达非政府组织 ICCF Holland (一个支持乌干达艾滋病患者的慈善组织)。
他将 vim 设计为一款可自由分发的开源慈善软件,每次用户下载 Vim 时,系统都会提示他们考虑向 ICCF Holland 捐款。
如果你安装了 vim,或在现代化的终端中(如 Vercel 开源的 Hyper)直接输入 vi -v,它会用国际化的文本请求我们 “帮助乌干达的可怜儿童!”。
VIM - Vi IMproved
~
~ 版本 9.0.1403
~ 维护人 Bram Moolenaar 等
~ Vim 是可自由分发的开放源代码软件
~
~ 帮助乌干达的可怜儿童!
~ 输入 :help iccf<Enter> 查看说明
~
~ 输入 :q<Enter> 退出
~ 输入 :help<Enter> 或 <F1> 查看在线帮助
~ 输入 :help version9<Enter> 查看版本信息
但很遗憾如我们看到的新闻,2023年8月3日,Bram Moolenaar 因病离开了人世,这是其家属在 2023年8月5日 公开的 Message 译文和原文链接:
Message from "vim_announce" on Google Group。
# 通过谷歌引擎翻译,如有不对还请见谅。
亲爱的大家,
我们怀着沉重的心情通知大家,Bram Moolenaar 于 2023 年 8 月 3 日去世。Bram
的病情在过去几周内迅速恶化。Bram
一生的大部分时间都奉献给了 VIM,他为你们加入的 VIM 社区感到非常自豪。
我们一家人现在正在安排 Bram 的葬礼,葬礼将在荷兰举行,将使用荷兰语。具体日期、时间和地点尚待确定。
如果您希望参加他的葬礼,请发送消息至funer...@gmail.com。考虑到我们一家人目前的处境,这个电子邮件地址也可用于与家人联系其他事宜。致以
亲切的问候,
Bram Moolenaar 的家人
后话
其实光标的形状变化已经提示我们了,我是一个重度终端使用者,因为它很安全且注重用户隐私,一切都按照我们的预期执行,但我没有注意到光标的暗示,直到知道真相后,心情如万马奔腾又啼笑皆非,vi 编辑器是时代遗留的产物,但它并没有完全落后于时代,
我们仍然可以通过许多无修饰符(Windows/Option、Ctrl/Command、Shift、Alt/CMD)的快捷键直接键入,来进行复制整行、删除整行等快捷操作,它比更加颗粒化的 Shift + Home/End -> Ctrl + C -> Return -> Ctrl + V 要快的多得多,它对无障碍或非四肢健全的开发者更加友好。
即使是现代的 IDE/IDEA,也以 vim 的思想组合基础快捷键来实现 vim 对文本快速操作的功能。
因此,如果你也想在 Sublime 中体验现代 IDE/IDEA 的文本快捷操作,不妨尝试并保留 Vintage,
这是一份非常完整的 vim 快捷键列表: Vim Cheat Sheet,在我的网络环境(电信)测试下,即使大陆网络也能正常访问,
如果你无法访问这个网站,可以尝试作者 hall 于 2024-06-02 在知乎发布的文章 vim cheat sheet。