29

在 Visual Studio 中有一些非常烦人的东西:当我展开或折叠一个方法或代码区域时,此操作会被推送到撤消堆栈上。因此,如果我在方法中编辑一些代码,然后折叠该方法,然后想要撤消我的更改,我必须撤消两次:一次用于折叠操作,一次用于代码更改。如果您在编辑代码后展开或折叠了几件事,这可能会非常令人困惑,编辑器不断跳转到不同的地方并且您不知道您的更改是否已撤消......

所以我的问题是:是否可以禁用该行为?即,撤消堆栈中仅考虑代码的更改?

PS:我使用的是 Visual Studio 2008


如果这种行为也让您烦恼,请在 UserVoice 上投票解决它

4

6 回答 6

11

我创建了禁用大纲撤消扩展,该扩展将扩展和折叠操作从录制到 Visual Studio 2017/2019 中的撤消/重做堆栈中排除。

感谢 Rick Sladkey 的想法!

于 2019-03-11T07:22:07.810 回答
6

我稍微摸索了一下,发现实际上在 Visual Studio 中有一个选项可以禁用此行为,但它似乎并没有在用户界面的任何地方公开。但是,您可以以编程方式设置它,并且我测试它确实有效,所以它(技术上)是可能的。

选项是:

DefaultTextViewOptions.OutliningUndoOptionId

你这样设置:

textView.Options.SetOptionValue(DefaultTextViewOptions.OutliningUndoOptionId, false);

有了这些信息,可以编写一个非常简单的 Visual Studio 扩展来为所有新ITextView实例切换此设置。

于 2018-06-22T05:28:06.460 回答
4

您可以投票支持在Visual Studio UserVoice中修复它。

于 2013-10-21T08:30:56.587 回答
2

我不相信有办法禁用这种行为。

作为替代方案,撤消和重做工具栏图标具有历史下拉菜单,可让您直观地查看您将要撤消或重做的最近更改的摘要。这有时可以帮助确保您撤消(或重做)您所期望的。

由于这并不总是足以确切地知道更改是什么(撤消历史记录仅显示摘要),因此我偶尔用来解决此问题的解决方案是将撤消(ctrl-z)、重做(ctrl-y)和再次撤消。第一个撤消移动到发生更改的位置(并撤消该更改)。重做将撤消撤消(实质上是重复上次所做的更改)。最后一次撤消将再次执行撤消,窗口滚动到我可以实际看到撤消发生的位置,并且可以确认这是否是我期望撤消的更改。这不是很有效,但它可以非常有效地确保代码处于真正预期的状态。

于 2009-12-14T21:24:54.097 回答
1

我可以提出的最佳解决方案是使用 CTRL+M 禁用大纲,然后使用 CTRL+P。

于 2009-12-10T15:51:41.567 回答
1

首先,似乎并非所有大纲操作都记录在撤消/重做堆栈中。

  • Toggle Outlining Expansion ( CTRL+ M/ CTRL+ M) 记录在堆栈中
  • Toggle All Outlining ( CTRL+ M/ CTRL+ L) 被记录在堆栈中
  • 折叠到定义 ( CTRL+ M/ CTRL+ O) 不会记录在堆栈中

因此,据我所知,在 Visual Studio 2008 的撤消/重做堆栈中记录切换操作是不可能的。

您拥有它来启用/禁用每种源类型的大纲的唯一选项。对于 C#,可以在工具选项文本编辑器C#高级中启用/禁用大纲,并在文件打开时输入大纲模式复选框。

于 2009-12-15T16:41:05.823 回答