nvi
(BSD系统)或原始的
vi
(Arch Linux)。有很多区别,但最大的区别是烦人的是,我只能撤消上一次操作。第二次按下u键是
“ redo”。
是否有某种方法可以使此功能正常工作?
#1 楼
来自nvi(1)
: u Undo the last change made to the file. If repeated, the u command
alternates between these two states. The . command, when used
immediately after u, causes the change log to be rolled forward or
backward, depending on the action of the u command.
所以按u,然后继续按。更多还原;如果再次按u,它将“反转”方向并按。将重做。
直到昨天我才知道。并以为这是一个新功能,但似乎至少从1996年的nvi 1.79开始就这样工作了。
在最初的vi中不起作用;
/>撤消记录为:
u Undoes the last change made to the current buffer. If repeated,
will alternate between these two states, thus is its own
inverse. When used after an insert which inserted text on more
than one line, the lines are saved in the numeric named buffers
(3.5).
这实际上是一种复杂的说法,即再次按下u
将重做您的更改。
Vim的
:help undo
也是这样(以及为什么我认为它也不会在nvi
中起作用): u Undo [count] changes. {Vi: only one level}
#2 楼
原始vi
必须进行多次撤消(除了U
可以在一行中还原多个更改)之外,还有编号的寄存器,其中保存了九个最近的更改或删除。
如果从编号寄存器中放入,则后续的点命令
在重复该命令时将递增该寄存器。
例如带有以下文本,并用
>
指示光标线, aaaa
> bbbb
cccc
dddd
eeee
命令
dd..
将导致: aaaa
> eeee
如果您随后输入
"1P
,则vi将从寄存器"1
中删除最近删除的内容:
aaaa
> dddd
eeee
点击
.
将内容放入下一个最新的寄存器,方法是执行
"2P
,然后再次单击.
,将会放入寄存器
"3
的内容。因此,简而言之,
"P..
会将您输入的所有文本已删除,留下您
aaaa
> bbbb
cccc
dddd
eeee
不妙,但总比没有好!更有用的是,您
可以在缓冲区的开头或结尾使用它来快速
检查编号寄存器中的内容。然后,您可以
轻松删除不需要的内容。
在
vim中的
:help redo-register
中进行了说明。#3 楼
使用原始vi,按[n] u后退n步。逐步逐步返回...
按[n] u后退n步
然后按[n] u重做n步
然后按[n + 1] u返回[n + 1]步
等
评论
我有一些接近原始vi的东西,而且似乎没有退后n步。
–muru
16年4月18日在19:49
同意原始Vi只能使用u还原单个更改,或者将单个行还原为开始使用U进行编辑之前的状态。
– Antony
16 Dec 26 '15:13