在Visual Studio中有一些令人讨厌的东西:当我展开或折叠方法或代码区域时,此操作会在撤消堆栈上推送。因此,如果我在方法中编辑某些代码,然后折叠该方法,然后想要撤消我的更改,我必须撤消两次:一次用于崩溃操作,一次用于代码更改。如果您在编辑代码后展开或折叠了几件事情,编辑器会不断跳到不同的地方并且您不知道您的更改是否已被撤消,这可能会非常令人困惑......
所以我的问题是:是否可以禁用该行为?即,在撤消堆栈中只考虑代码的变化吗?
PS:我正在使用Visual Studio 2008
编辑:如果此行为也让您烦恼,请vote to fix it on UserVoice!
答案 0 :(得分:4)
您可以投票通过Visual Studio UserVoice进行修改。
答案 1 :(得分:2)
我不相信有办法禁用此行为。
作为替代方案,撤消和重做工具栏图标具有历史记录下拉列表,允许您直观地查看最近将要撤消或重做的更改的摘要。这有时可以帮助确保您撤消(或重做)您期望的内容。
由于这并不总是足以准确知道更改的内容(撤消历史记录只显示摘要),我偶尔用来解决此问题的解决方案是组合undo(ctrl-z),redo(ctrl-y) ),并再次撤消。第一个撤消移动到发生更改的位置(并撤消更改)。重做将撤消撤消(基本上重复最后一次更改)。并且最后一次撤消将再次执行撤消操作,窗口滚动到我可以实际看到撤消发生的位置,并且可以确认这是否是我期望撤消的更改。它效率不高,但确保代码处于真正期望的状态可能非常有效。
答案 2 :(得分:2)
首先,似乎并非所有概述操作都记录在撤消/重做堆栈中。
因此,据我所知,无法避免在Visual Studio 2008中的撤消/重做堆栈中记录切换操作。
您可以使用它来启用/禁用每种源类型的大纲。对于C#,可以使用Tools > Options > Text Editor > C# > Advanced
复选框在"Enter outlining mode when files open"
中启用/禁用大纲。
答案 3 :(得分:2)
我四处寻找,发现Visual Studio中实际上有一个选项可以禁用此行为,但是它似乎并未在用户界面中暴露。但是,您可以以编程方式设置它,并且我测试了它是否可以正常工作,因此(技术上)可行。
选项为:
DefaultTextViewOptions.OutliningUndoOptionId
您将其设置如下:
textView.Options.SetOptionValue(DefaultTextViewOptions.OutliningUndoOptionId, false);
使用此信息,可以编写一个非常简单的Visual Studio扩展来为所有新的ITextView
实例切换此设置。
答案 4 :(得分:1)
我可以建议的最佳解决方案是使用CTRL + M禁用轮廓,然后使用CTRL + P.
答案 5 :(得分:0)
我已经创建了Disable Outlining Undo扩展名,该扩展名将扩展和折叠操作从记录到Visual Studio 2017/2019的撤消/重做堆栈中排除了。
感谢里克·斯拉基(Rick Sladkey)!