代码之家  ›  专栏  ›  技术社区  ›  Thomas Levesque

Visual Studio:从撤消/重做堆栈中排除大纲显示

  •  22
  • Thomas Levesque  · 技术社区  · 16 年前

    在visualstudio中有一个非常烦人的问题:当我展开或折叠一个方法或代码区域时,这个操作会被推到undo堆栈上。因此,如果我在一个方法中编辑一些代码,然后折叠该方法,然后想要撤消我的更改,我必须撤消两次:一次用于折叠操作,一次用于代码中的更改。如果在编辑代码后展开或折叠了一些内容,编辑器不断跳转到不同的位置,并且您不知道更改是否已撤消,那么这可能会非常混乱。。。

    所以我的问题是:有没有可能禁用这种行为?i、 例如,在撤销堆栈中只考虑代码中的更改?

    PS:我正在使用VisualStudio2008


    vote to fix it on UserVoice !

    5 回复  |  直到 5 年前
        1
  •  11
  •   Sergey Vlasov    7 年前

    我创造了 Disable Outlining Undo 在Visual Studio 2017/2019中,不包括从录制到撤消/重做堆栈的展开和折叠操作的扩展。

    多亏了瑞克·斯莱德基的主意!

        2
  •  6
  •   Rick Sladkey    8 年前

    我做了一点探索,发现实际上visualstudio中有一个选项可以禁用此行为,但它似乎没有暴露在用户界面的任何地方。但是,您可以通过编程来设置它,并且我测试了它是否可以工作,因此(技术上)是可能的。

    DefaultTextViewOptions.OutliningUndoOptionId

    你把它设置成这样:

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

    ITextView 实例。

        3
  •  4
  •   splintor    12 年前

    你可以投票赞成把它修好 Visual Studio UserVoice

        4
  •  2
  •   iammichael    16 年前

    我不相信有什么方法可以阻止这种行为。

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

        5
  •  1
  •   Cédric Guillemette    16 年前

    我建议的最佳解决方案是使用CTRL+M禁用大纲显示,然后使用CTRL+P。

        6
  •  1
  •   Neuron MonoThreaded    5 年前

    首先,似乎并不是所有的大纲操作都记录在undo/redo堆栈中。

    • 切换大纲展开( CTRL键 + / + )记录在堆栈中
    • 切换所有大纲( CTRL键 CTRL键 +
    • + / CTRL键 + O

    因此,据我所知,在visualstudio2008中,无法避免在undo/redo堆栈中录制切换操作。

    工具 选项 文本编辑器 C级# 高级 打开文件时进入大纲模式 复选框。