标签: undo

在emacs中可以快速(重复)撤消吗?

我使用emacs,我有一个问题,它的撤消.

(对不起,也许这是一个愚蠢的问题,但我没有在互联网上找到任何关于它的信息,而它应该是任何编辑器的基本功能).

要调用每个撤消步骤,我需要按"Ctrl-x"然后按"u".但是如果我已经完成了200步并希望撤消它们,我的手和手指会因重复'Ctrl-x'然后'u'200次而感到非常痛苦,更不用说这个操作需要大约5分钟.

例如,在Microsoft Word中(以及许多其他编辑器中)撤消是Ctlr-Z,但您可以按住Ctlr-Z并快速运行多个撤消步骤.这在emacs中是否可以实现?

emacs editor undo

14
推荐指数
2
解决办法
3099
查看次数

Git还原不起作用

所以我有一个开发分支,我希望恢复提交.所以我输入git revert <commit-hash>

但是当它运行时它说:

$ git revert 165702b305
On branch develop
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

这个提交已经被追踪为bug的罪魁祸首和id想要恢复它,但由于某种原因它不起作用.它会以某种方式被破坏吗?其他答案和搜索无法提供帮助.

git undo git-commit

14
推荐指数
1
解决办法
8740
查看次数

"恢复","修改","回滚"和"撤消"提交之间有什么区别?

虽然我经常使用Git,但我还是初学者.

有时,我犯了一个错误,但只有我提交之后才发现它.在那时,我通常不得不花费很长时间在互联网上寻找我应该用来摆脱它的命令(在推送之前).

每当发生这种情况时,我发现自己想知道我经常遇到的四个术语之间的区别是什么:

  • 还原,
  • 修改,
  • 回滚,
  • 撤消.

我认为现在是时候一劳永逸地学习这些差异了.这些是什么?

git undo rollback git-amend git-revert

14
推荐指数
2
解决办法
6915
查看次数

撤消意外的hg条带?

我不小心运行了hg strip,并删除了一堆提交.从那以后,我没有在回购中做过任何事情.有没有办法让我恢复这一堆提交,撤消我刚刚运行的hg条带?

mercurial undo revert

14
推荐指数
1
解决办法
4639
查看次数

“可撤消”应用函子的示例?

我宣布了一个关于应用函子的小组。从我们通常所说的“行动”来看,似乎这样的团体可以使行动被撤销

\n
import Control.Applicative\n\nclass Alternative f => Undoable f where\n    undo :: f a -> f a\n
Run Code Online (Sandbox Code Playgroud)\n

成为一个团体,为所有人x :: Undoable f => f a,应满足以下法律:

\n
x <|> undo x \xe2\x89\xa1 empty\nundo x <|> x \xe2\x89\xa1 empty\n
Run Code Online (Sandbox Code Playgroud)\n

一些实例:

\n
import Control.Arrow\nimport Data.Functor.Compose\nimport Data.Functor.Product\nimport Data.Proxy\n\ninstance Undoable Proxy where\n    undo _ = Proxy\n\ninstance (Undoable f, Applicative g) => Undoable (Compose f g) where\n    undo (Compose x) = Compose (undo x)\n\ninstance (Undoable f, Undoable g) => Undoable (Product …
Run Code Online (Sandbox Code Playgroud)

haskell undo applicative alternative-functor

13
推荐指数
2
解决办法
213
查看次数

撤消WPF MV-VM内部,它是如何适应的?

在我之前的项目中,我已经在c ++中实现了undo系统,我知道它是如何工作的.我也知道Command模式.

我将实现一个C#/ WPF桌面应用程序,并希望将我的设计基于MV-VM模式.

该申请将:

  • 是一个相对较小的项目(2-3周估计工作为1开发)
  • 有一个简单的数据模型与持久性(linq到XML)
  • 支持撤消/重做

我想知道是否有人在遵循MV-VM模式时有实施撤销系统的经验.它怎么会适合它?它如何从INotifyPropertyChanged和INotifyCollectionChanged通知中受益,因此在实现模型(业务对象)时需要最少的工作.

我认为撤销系统会某种程度集成到ViewModel层中,因为它是一种UI状态.

任何想法?

c# wpf undo mvvm

12
推荐指数
1
解决办法
4558
查看次数

内存有限时,位图编辑器的快速撤消/重做?

我正在尝试为移动设备编写位图编辑器(即Photoshop的有限版本).用户的文档由大约1000x500大小的~4位图组成.

我想要一个尽可能简单的强大而高效的撤销/重做系统.我的目标是大约0.2秒来撤消或重做编辑.我正在寻找关于我目前的预期方法或我可以使用的一些新想法的一些反馈.我认为我所拥有的东西太复杂了,所以我对继续进行谨慎,所以只要知道我能做的最好就会很好.

我已经尝试了使用Command模式和Memento模式的组合来实现我的撤销/重做系统.到目前为止我得出的一些结论是:

  1. 我没有足够的内存,我不能足够快地将内存写入磁盘,以便在许多情况下使用纪念品支持上一个命令的"未执行"操作,例如,如果用户很快就进行了几次单独的绘画操作,我就不会能够存储表示用户绘制内容的位图,而不会让用户等待保存它们.

  2. 如果我将文档恢复到其初始状态并重放除最后一个命令之外的所有命令以实现撤销,即使是适量的命令,例如重放10个绘画笔划或5个涂抹笔划需要~1秒,这也太慢了呆滞.

  3. 我可以通过将整个文档定期保存到磁盘并在播放命令之前恢复到此检查点来解决前一点.为了比上一个检查点更进一步撤消,我们在此之前重新加载检查点并重放命令.

方法2有3个工作正常,除了保存整个文档变得越来越慢,因为添加了更多的图层,并且它已经慢了4位图(等待5到10秒).因此,我需要修改3,以便我只保存自上次以来发生的变化.

由于许多命令仅在一个层上运行,因此仅保存自上一个检查点以来已修改的层是有意义的.例如,如果我有3个初始层,我已经指出可以保存检查点的位置,那么我的命令堆可能看起来像这样.

(Checkpoint1: Save layer 1, 2 and 3.)
Paint on layer 1
Paint on layer 1
(Checkpoint2: Save layer 1. Reuse saved layers 2 and 3 from Checkpoint1.)
Paint on layer 2
Paint on layer 2
(Checkpoint3: Save layer 2. Reuse saved layers 1 and 3 from Checkpoint2.)
Paint on layer 3
Paint on layer 3
Flip layer 3 horizontally.
(Checkpoint4: Save layer 3. Reuse saved layers 1 and 2 from Checkpoint3.)
Resize …
Run Code Online (Sandbox Code Playgroud)

algorithm optimization design-patterns undo

12
推荐指数
1
解决办法
1470
查看次数

Intellij IDEA无法撤消

我正在Intellij IDEA开展一个项目.我移动重构了一些包.但是我想撤消我的更改.当我点击恢复按钮时,它说

Cannot Undo

并显示下面的列表:

Following files affected by this action have been already changed

如何恢复我的更改,因为我丢失了一些包和类.Intellij IDEA会将它们保存在临时文件夹中吗?

PS:我在64位Ubuntu计算机上使用open jdk 1.6.0.

undo intellij-idea revert

12
推荐指数
2
解决办法
8729
查看次数

EmberJS历史/撤消

编辑:我已经在GitHub上创建了自己的实现

我想知道,ember中是否有内置功能可以保存对象/数组的状态?在我们的应用程序中,我们为特定的Ember.ArrayController构建了自己的撤消/历史记录实现,但它似乎是错误和缓慢的(在Firefox中).所以我想知道是否有什么可以取代我们的脚本.

基本上我们使用它:用户添加,编辑,修改该数组中的元素,有时他们想撤消/重做他们的更改.目前我们将状态数量限制为30(可能不是最佳数量).

任何想法/链接表示赞赏!

javascript undo ember.js

12
推荐指数
1
解决办法
1092
查看次数

如何在java中为动作实现简单的撤消/重做?

我已经创建了一个XML编辑器,我在最后阶段陷入困境:添加撤消/重做功能.

当用户向JTree添加元素,属性或文本时,我只需要添加undo/redo.

我现在仍然很新,但今天在学校我试图(不成功)创建两个栈对象[],称为撤消和重做,并添加执行的动作.

例如,我有:

Action AddElement() {

// some code
public void actionPerformed(ActionEvent e) {

                    performElementAction();
                }
}
Run Code Online (Sandbox Code Playgroud)

performElementAction实际上只是向JTree添加了一个Element.

我想添加一种方法来将此操作添加到我的撤消堆栈中.是否只有一种简单的方法来实现undo.push(执行整个动作)或其他什么?

抱歉听起来像坏人,但那就是我:(

java user-interface undo command-pattern

12
推荐指数
3
解决办法
2万
查看次数