Visual Studio: исключить выделение из стека отмены / повтора
В Visual Studio есть что-то действительно раздражающее: когда я раскрываю или сворачиваю область метода или кода, это действие помещается в стек отмены. Поэтому, если я отредактирую некоторый код в методе, затем сверну этот метод, а затем захочу отменить свое изменение, мне придется отменить дважды: один раз для действия свертывания и один раз для изменения кода. Это может ОЧЕНЬ сбивать с толку, если после редактирования кода вы развернули или свернули несколько вещей, редактор продолжает переходить в разные места, и вы не знаете, были ли отменены ваши изменения или нет...
Итак, мой вопрос: возможно ли отключить такое поведение? то есть, что в стеке отмены учитываются только изменения в коде?
PS: я использую Visual Studio 2008
РЕДАКТИРОВАТЬ: если это поведение вас раздражает, пожалуйста, проголосуйте, чтобы исправить это на UserVoice!
5 ответов
Я создал расширение Disable Outlining Undo, которое исключает операции развертывания и свертывания из записи в стек отмены / повтора в Visual Studio 2017/2019.
Спасибо Рику Слэдки за идею!
Я немного покопался и обнаружил, что на самом деле в Visual Studio есть возможность отключить это поведение, и, тем не менее, оно, похоже, не отображается нигде в пользовательском интерфейсе. Однако вы можете установить его программно, и я проверил, что он работает, так что это (технически) возможно.
Варианты:
DefaultTextViewOptions.OutliningUndoOptionId
и вы установите это так:
textView.Options.SetOptionValue(DefaultTextViewOptions.OutliningUndoOptionId, false);
С этой информацией можно написать очень простое расширение Visual Studio, чтобы переключать этот параметр для всех новых ITextView
экземпляров.
Вы можете проголосовать за исправление в Visual Studio UserVoice.
Я не верю, что есть способ отключить это поведение.
В качестве альтернативы значки панели "Отменить" и "Повторить" имеют выпадающие списки истории, которые позволяют визуально увидеть сводку последних изменений, которые вы бы отменили или повторили. Иногда это может помочь гарантировать, что вы отменяете (или переделываете) то, что ожидаете.
Поскольку этого не всегда достаточно, чтобы точно знать, что это за изменения (история отмены отображает только сводную информацию), решение, которое я иногда использую для решения этой проблемы, состоит в комбинировании отмены (ctrl-z), повторения (ctrl-y) и отменить снова. Первая отмена перемещается туда, где произошло изменение (и отменяет это изменение). Повторить отменяет отмену (которая по существу повторяет последнее сделанное изменение). И последняя отмена выполнит отмену снова с прокруткой окна до места, где я на самом деле вижу происходящее отмену, и может подтвердить, было ли это изменение, которое я ожидал отменить. Это не очень эффективно, но может быть очень эффективно, чтобы гарантировать, что код находится в состоянии, которое действительно ожидается.
Во-первых, кажется, что не все описываемые операции записываются в стек отмены / восстановления.
- Расширение Toggle Outlining (CTRL+M/CTRL+M) записывается в стек
- Toggle All Outlining (CTRL+M/CTRL+L) записывается в стек
- Свернуть до определений (CTRL+M/CTRL+O) НЕ записывается в стек
Итак, насколько я знаю, невозможно избежать записи операций Toggle в стек отмены / повтора в Visual Studio 2008.
Единственный вариант, который у вас есть, это включить / отключить выделение для каждого типа источника. Для C# выделение может быть включено / отключено в Tools > Options > Text Editor > C# > Advanced
с "Enter outlining mode when files open"
флажок.
Лучшее решение, которое я могу предложить, - отключить выделение, используя CTRL+M, а затем CTRL+P.