复古模式

Vintage 是 Sublime Text 的 vi 模式编辑包。它允许您将 vi 的命令模式与 Sublime Text 的功能(包括多项选择)相结合。

Vintage 模式是开源开发的,非常欢迎您提供补丁。如果您想做出贡献,详细信息请参阅 GitHub 仓库

启用 Vintage🔗

默认情况下,Vintage 通过 ignored_packages 设置禁用。如果从忽略的软件包列表中删除 "Vintage",您将能够使用 vi 键进行编辑

  1. 选择 首选项 ▶ 设置 菜单项

  2. 编辑 ignored_packages 设置,将其从:"ignored_packages": ["Vintage"] 更改为 "ignored_packages": [] 并保存文件。

  3. Vintage 模式现已启用 - 您将在状态栏中看到“插入模式”

默认情况下,Vintage 从插入模式启动。这可以通过将以下设置添加到您的用户设置中来更改

"vintage_start_in_command_mode": true

包含的功能🔗

Vintage 包括大多数基本操作:d(删除),y(复制),c(更改),gu(小写),gU(大写),g~(切换大小写),g? (rot13), <(取消缩进)和 >(缩进)。

它还包括许多移动,包括 lhjkWweEbBalt+w(按子词移动)、alt+W(按子词向后移动)、$^%0GggfFtT^f^bHML

支持文本对象,包括单词、引号、括号和标签。

重复 (.) 以及为命令和移动指定计数的功能也包括在内。支持寄存器、宏和书签。还支持许多其他杂项命令,例如 */nNsS 等等。

不包含的功能🔗

插入模式是常规的 Sublime Text 编辑,使用通常的 Sublime Text 键绑定:不模拟 vi 插入模式键绑定。

除了通过命令面板工作的 :w:e 之外,没有实现 Ex 命令。

幕后🔗

Vintage 模式完全通过按键绑定和插件 API 实现 – 您可以随意浏览 Vintage 软件包,了解它是如何组合在一起的。例如,如果您想将 jj 绑定到退出插入模式,您可以添加此按键绑定

{
    "keys": ["j", "j"],
    "command": "exit_insert_mode",
    "context":
    [
        { "key": "setting.command_mode", "operand": false },
        { "key": "setting.is_widget", "operand": false }
    ]
}

Mac🔗

默认情况下,在 Mac 上按住某个键不会重复它,而是会显示一个弹出菜单以在字符变体之间进行选择。这在命令模式下不能很好地工作,因此您可能希望禁用它。这可以通过在 Terminal.app 中执行以下操作来完成

defaults write com.sublimetext.2 ApplePressAndHoldEnabled -bool false

Ctrl 键🔗

Vintage 支持以下 Ctrl 键绑定

  • Ctrl+[: Escape

  • Ctrl+R: 重做

  • Ctrl+Y: 向下滚动一行

  • Ctrl+E: 向上滚动一行

  • Ctrl+F: 向下翻页

  • Ctrl+B: 向上翻页

但是,由于它们与其他 Sublime Text 按键绑定冲突,因此默认情况下在 Windows 和 Linux 上禁用这些绑定。可以使用 vintage_ctrl_keys 设置启用它们

"vintage_ctrl_keys": true

Ex 模式🔗

请查看 VintageEx 以获取 Vintage 的 Ex 模式。