Documentation 复古模式(Vintage Mode)

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

复古模式是开源的,非常欢迎提交补丁。如果您想贡献,详情请参阅GitHub repo

启用Vintage

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

  1. 选择 Preferences ▶ Settings 菜单项
  2. 编辑 ignored_packages 设置,将其更改为:
    "ignored_packages": ["Vintage"]
    至:
    "ignored_packages": []
    保存文件。
  3. 启用复古模式后 - 您将在状态栏中看到“INSERT MODE”

Vintage默认以插入模式启动。可以通过将以下设置添加到用户设置来更改此设置:

"vintage_start_in_command_mode": true

Vintage包含哪些VI命名

Vintage包括VI的大多数基本动作:d (删除), y (复制), c (更改), gu (小写), gU (大写), g~ (交换), g? (rot13), < (unindent), and > (缩进)。

它还包括许多动作,包括 l, h, j, k, W, w, e, E, b, B, alt+w (move by sub-words), alt+W (move backwards by sub-words), $, ^, %, 0, G, gg, f, F, t, T, ^f, ^b, H, M, and L.

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

通过重复 (.)指定命令和动作的计数。支持寄存器,宏和书签。其他杂项命令也同样支持,如: *, /, n, N, s, S 等等。

不包含哪些命名

Sublime Text的编辑状态默认是插入模式,这时可以使用Sublime Text的常规快捷键,无法使用vi命令。

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

Under the Hood

Vintage模式完全通过键绑定和插件API实现 - 您可以浏览Vintage包并查看它是如何组合在一起的。例如,如果要绑定jj到退出插入模式,可以添加此键绑定:

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

OS X Lion

在Lion中,按住某个键不会重复,而是显示一个弹出菜单,用于在字符变体之间进行选择。这在命令模式下不起作用,可以通过在终端输入以下命令来禁用:

defaults write com.sublimetext.2 ApplePressAndHoldEnabled -bool false

Ctrl Keys

Vintage支持这些Ctrl 键绑定:

  • Ctrl+[: Escape
  • Ctrl+R: 重做(Redo)
  • Ctrl+Y: 向下滚动一行(Scroll down one line)
  • Ctrl+E: 向上滚动一行(Scroll up one line)
  • Ctrl+F: 向下翻页(Page Down)
  • Ctrl+B: 向下翻页(Page Up)

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

"vintage_ctrl_keys": true

Ex模式

请查看VintageEx以获得VintageEx的Ex模式