Sublundo
一个实现类似 Vim 分支撤销/重做的 Sublime Text 3 插件。
详情
安装
- 总数 503
- Win 198
- Mac 159
- Linux 146
2022年8月6日 | 2022年8月5日 | 2022年8月4日 | 2022年8月3日 | 2022年8月2日 | 2022年8月1日 | 2022年7月31日 | 2022年7月30日 | 2022年7月29日 | 2022年7月28日 | 2022年7月27日 | 2022年7月26日 | 2022年7月25日 | 2022年7月24日 | 2022年7月23日 | 2022年7月22日 | 2022年7月21日 | 2022年7月20日 | 2022年7月19日 | 2022年7月18日 | 2022年7月17日 | 2022年7月16日 | 2022年7月15日 | 2022年7月14日 | 2022年7月13日 | 2022年7月12日 | 2022年7月11日 | 2022年7月10日 | 2022年7月9日 | 2022年7月8日 | 2022年7月7日 | 2022年7月6日 | 2022年7月5日 | 2022年7月4日 | 2022年7月3日 | 2022年7月2日 | 2022年7月1日 | 2022年6月30日 | 2022年6月29日 | 2022年6月28日 | 2022年6月27日 | 2022年6月26日 | 2022年6月25日 | 2022年6月24日 | 2022年6月23日 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Mac | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Linux | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
README
Sublundo
Sublundo 将像 Vim 一样的持久、分支撤销/重做功能引入到 Sublime Text 3 中。它受到了 Gundo(及其继任者 Mundo)的启发。
然而,由于 Sublime Text 不支持与 Vim 一样的分支撤销,我们需要构建自己的数据结构——UndoTree
。一个 UndoTree
是一个包含表示特定缓冲区状态的节点的 N-ary tree。
每个节点包含映射节点 ID 到补丁的信息,这意味着我们不需要为每个插入存储整个缓冲区(通常只包含小的更改),我们只需要存储前进和后退所需的信息(在 parent → children
和 child → parent
方向上)。例如:如果 A = 'Hello, world!'
和 B = 'Bye, world!'
,则 A → B
转换将如下所示:[(-1, 'H'), (1, 'By'), (0, 'e'), (-1, 'llo'), (0, ', wo')]。在 Python 中的表示可能会是:
>>> t = UndoTree()
>>> t.insert('Hello, world!')
>>> t.insert('Bye, world!')
>>> t.text()
'Bye, world!'
>>> t.undo()
# (buffer, patch, cursor position)
('Hello, world!', '@@ -1,7 +1,9 @@\n+H\n-By\n e\n+llo\n , wo\n', None)
>>> t.text()
'Hello, world!'
安装
- 安装 Package Control。
- 打开命令面板(macOS 上为 Command-Shift-P,Linux/Windows 上为 Ctrl-Shift-P)。
- 选择
Package Control: Install Package
,然后当列表出现时选择Sublundo
。
使用方法
此插件完全替换了内置的 undo
和 redo
命令:每次撤销或重做编辑时,都会运行 sublundo
命令。因此,您应该能够像平时一样编辑、撤销和重做文本。
当您想要可视化或导航 UndoTree
时,您将调用 Sublundo: Visualize
命令,然后使用以下键来移动
- up(或 k):向上移动当前分支(即调用
redo
)。 - 按 down (或 j):将当前分支向下移动(即调用
undo
)。 - 按 left (或 h):移动到左侧的下一个分支。
- 按 right (或 l):移动到右侧的下一个分支。
有关可用的设置信息,请参阅默认设置文件。