标签: undo-redo

使用Emacs"撤消"后,如何"重做"更改?

这篇文章说"Emacs有重做,因为你可以在撤消时反转方向,从而撤消撤消".

这是什么意思?用户如何使用Emacs"重做"?

emacs undo-redo

259
推荐指数
7
解决办法
13万
查看次数

如何配置IntelliJ(也是Android Studio)重做快捷方式到CTRL + Y而不是CTRL + SHIFT + Z?

默认的IntelliJ/Android Studio"重做"操作快捷方式是CTRL+ Shift+ Z,这是Windows用户的常见问题.

更大的问题是CTRL+ Y被映射到"删除行"操作 - 这会导致撤消堆栈丢失.

要解决此问题,如何在IntelliJ 中将"重做"快捷方式更改为CTRL+ Y

keymapping intellij-idea undo-redo redo android-studio

141
推荐指数
2
解决办法
4万
查看次数

NSInvocation for Dummies?

NSInvocation工作究竟如何?有一个很好的介绍吗?

我特别关注以下代码(来自Cocoa Programming for Mac OS X,3rd Edition)的工作原理,但是也可以独立于教程示例应用这些概念.代码:

- (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index
{
    NSLog(@"adding %@ to %@", p, employees);
    // Add inverse of this operation to undo stack
    NSUndoManager *undo = [self undoManager];
    [[undo prepareWithInvocationTarget:self] removeObjectFromEmployeesAtIndex:index];
    if (![undo isUndoing])
        [undo setActionName:@"Insert Person"];

    // Finally, add person to the array
    [employees insertObject:p atIndex:index];
}

- (void)removeObjectFromEmployeesAtIndex:(int)index
{
    Person *p = [employees objectAtIndex:index];
    NSLog(@"removing %@ from %@", p, employees);
    // Add inverse of this operation to undo stack
    NSUndoManager …
Run Code Online (Sandbox Code Playgroud)

cocoa objective-c undo-redo

138
推荐指数
3
解决办法
6万
查看次数

使用Vim的持久撤消?

Vim 7.3的一个新功能是"持久性撤销",它允许在退出缓冲区时将非文本保存到文件中.

不幸的是,我还没能完全启用它,或者我必须使用它错了.这是我到目前为止所尝试的:

我在〜/ .vimrc中添加了以下内容

set undofile                " Save undos after file closes
set undodir=$HOME/.vim/undo " where to save undo histories
set undolevels=1000         " How many undos
set undoreload=10000        " number of lines to save for undo
Run Code Online (Sandbox Code Playgroud)

在此之后,我应该能够打开任何文件,编辑它,然后保存关闭它,当我再次打开它时,我应该能够撤消/重做,好像我永远不会离开.不幸的是,情况似乎并非如此,因为从未写过任何无人事务所.

笔记:

  1. 我在Win 7上使用来自Vim的Vim 7.3而没有奶油项目.持久撤消是烘焙的.

  2. $ HOME/.vim/undo存在于我的文件系统中

vim undo undo-redo

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

如何在vi/vim中返回(ctrl + z)

在普通的文本编辑器中[对Vim充分尊重]有一个快捷方式Ctrl+ Z当你做了一些讨厌的东西并希望返回到以前版本的文本时.喜欢Word中的BACK按钮.我想知道你怎么能在Vim中实现这种行为.

vi vim undo back undo-redo

83
推荐指数
4
解决办法
13万
查看次数

用于实施UNDO和REDO选项的数据结构

我想实现UNDO和REDO选项(正如我们在MS word等中看到的那样).你能为我建议一个数据结构,我该如何实现呢?

design-patterns undo-redo data-structures

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

Android Studio撤消(Ctrl-Z)/重做(Ctrl-Y)无效

我刚刚从Eclipse迁移到Android Studio,当我尝试执行Ctrl+ Z/ Ctrl+ Y撤消/重做代码更改时,我发现了非常奇怪的行为.

很难描述究竟发生了什么,但最终的结果是我通常最终只是丢失了我的代码而不得不从内存中输入它...

IDE中的"撤消"和"重做"按钮似乎工作正常,因此我的快捷键可能出现问题(这应该是令人惊讶的,因为我应该有一个标准的安装/设置).

任何人都可以建议做什么,所以CtrlZ/ Ctrl+ Y将以预期的方式工作.

android undo-redo android-studio

44
推荐指数
4
解决办法
5万
查看次数

如何在UIBarButtonItem中添加UIGestureRecognizer,就像在iPad应用程序中常见的undo/redo UIPopoverController方案一样?

问题

在我的iPad应用程序中,在按下并保持事件后才能将弹出窗口附加到按钮栏项目.但这似乎是撤消/重做的标准.其他应用程序如何做到这一点?

背景

我的UIKit(iPad)应用程序的工具栏中有一个撤消按钮(UIBarButtonSystemItemUndo).当我按下撤销按钮时,它会触发它的动作,即undo:,并且正确执行.

然而,在iPad上撤消/重做的"标准UE惯例"是按下撤销执行撤消,但按住按钮会显示一个弹出控制器,用户选择"撤消"或"重做"直到控制器被解除.

附加弹出控制器的常规方法是使用presentPopoverFromBarButtonItem:,我可以很容易地配置它.要仅在按住之后显示此内容,我们必须设置视图以响应"长按"手势事件,如此代码段中所示:

UILongPressGestureRecognizer *longPressOnUndoGesture = [[UILongPressGestureRecognizer alloc] 
       initWithTarget:self 
               action:@selector(handleLongPressOnUndoGesture:)];
//Broken because there is no customView in a UIBarButtonSystemItemUndo item
[self.undoButtonItem.customView addGestureRecognizer:longPressOnUndoGesture];
[longPressOnUndoGesture release];
Run Code Online (Sandbox Code Playgroud)

有了这个,在按下并保持视图后,方法handleLongPressOnUndoGesture:将被调用,在这个方法中,我将配置并显示undo/redo的popover.到现在为止还挺好.

这个问题是没有附加视图.self.undoButtonItem是一个UIButtonBarItem,而不是一个视图.

可能的解决方案

1)[理想] 将手势识别器附加到按钮栏项目.可以将手势识别器附加到视图,但UIButtonBarItem不是视图.它确实具有.customView的属性,但当buttonbaritem是标准系统类型时(在这种情况下它是),该属性为nil.

2)使用另一个视图.我可以使用UIToolbar,但这需要一些奇怪的命中测试,并且如果可能的话首先是一个全面的黑客攻击.我无法想到使用其他替代视图.

3)使用customView属性.像UIBarButtonSystemItemUndo这样的标准类型没有customView(它是nil).设置customView将删除它需要的标准内容.这将相当于重新实现UIBarButtonSystemItemUndo的所有外观和功能,如果可能的话.

如何将手势识别器附加到此"按钮"?更具体地说,如何在iPad应用程序中实现标准的按住 - 显示 - 重做 - 弹出窗口?

想法?非常感谢,特别是如果有人真的在他们的应用程序中工作(我在想你,omni)并想分享......

cocoa-touch undo-redo uibarbuttonitem ipad uigesturerecognizer

39
推荐指数
5
解决办法
2万
查看次数

如何为TextBox实现高效的撤消/重做功能

我有一个TextBox,我想为它实现撤消/重做功能.我已经读过它可能已经有一些轻微的撤消功能了,但它有错误吗?无论如何,我想实现撤消和重做功能,也只是为了了解如何继续这样做.

我已经阅读了有关Memento模式的内容,并在CodeProject 上查看了一些关于Generic Undo/Redo示例的内容.而模式kiiind是有道理的.我似乎无法围绕如何实现它.如何有效地做一个内容TextBox.

当然我可以存储的textbox.Text时间TextChanges,但这会非常快地拥抱相当多的内存,特别是如果TextBox包含大量的文本.

所以无论如何,我正在寻找一些关于如何实现良好,清晰和有效的实现此功能的方法的建议.一般而言,特别是对于TextBox c",)

c# memento undo-redo

29
推荐指数
2
解决办法
5万
查看次数

如何在Eclipse中的工具栏中添加撤消/重做按钮?

我觉得有点尴尬地问这个问题,但是我怎样才能在eclipse的工具栏中定期进行撤销/重做按钮?

我经常在德语和英语键盘布局之间切换.这些布局上的YZ互换,因此我不断触发撤消/重做的错误操作.我已经观察了自己如何在没有其他编辑器的情况下解决这个问题:我只是使用工具栏进行此操作.

我已经尝试了谷歌等,以及通过自定义透视对话框,但无法找到我正在寻找的东西:-(

eclipse toolbar undo-redo

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