重做所有未完成的更改
Redo all undone changes
类似于this question,是否有一个命令可以重做vim中所有未完成的更改?目前我只知道1000<C-R>
或类似的,只是重做大量的更改,但感觉很麻烦而且很随意。
尝试:exec 'undo' undotree()['seq_last']
这将重做每个更改,直到最新的更改。
如果你想把它映射到像ctrl+shift+R这样的东西。
把它放在你的 vimrc 文件中:
nnoremap <C-S-R> :exec 'undo' undotree()['seq_last']<CR>
说明
undo {N}
跳转到撤消树中的第 n 个更改。
undotree()
是一个函数,returns 一个带有撤销树状态的字典。
undotree()['seq_last']
在字典中查找关键字seq_last
。
从 :help undotree
我们看到与 seq_last
关联的值是:
The highest undo sequence number used.
:exec
从我们的表达式计算字符串。
比方说,undotree()['seq_last']
returns 42
。
此示例中的表达式将是 undo 42
,这将我们带到最新的更改,即第 42 个更改。
Vim有撤消分支,而不仅仅是线性撤消序列;记住这一点很重要。要转到最新的文本状态,您可以使用 9999g+
(9999
是任意高数)。或者,您可以使用 :later 1d
.
类似于this question,是否有一个命令可以重做vim中所有未完成的更改?目前我只知道1000<C-R>
或类似的,只是重做大量的更改,但感觉很麻烦而且很随意。
尝试:exec 'undo' undotree()['seq_last']
这将重做每个更改,直到最新的更改。
如果你想把它映射到像ctrl+shift+R这样的东西。 把它放在你的 vimrc 文件中:
nnoremap <C-S-R> :exec 'undo' undotree()['seq_last']<CR>
说明
undo {N}
跳转到撤消树中的第 n 个更改。
undotree()
是一个函数,returns 一个带有撤销树状态的字典。
undotree()['seq_last']
在字典中查找关键字seq_last
。
从 :help undotree
我们看到与 seq_last
关联的值是:
The highest undo sequence number used.
:exec
从我们的表达式计算字符串。
比方说,undotree()['seq_last']
returns 42
。
此示例中的表达式将是 undo 42
,这将我们带到最新的更改,即第 42 个更改。
Vim有撤消分支,而不仅仅是线性撤消序列;记住这一点很重要。要转到最新的文本状态,您可以使用 9999g+
(9999
是任意高数)。或者,您可以使用 :later 1d
.