Visual studio CTRL + SHIFT + T транспонировать - что он делает?

Я написал код и попробовал Ctrl + T проверить функцию транспонирования в visual studio.

Просто, чтобы проверить, что Ctrl + Shift + T делает обратное для этого транспонирования... Я попытался нажать Ctrl + Shift + T. и это просто испортило все...

Может ли кто-нибудь сказать мне, что именно это делает Ctrl + Shift + T (особенно с блоком)?

Например:

public string returnDateTimeToMyformat(DateTime dt)
{
    dt = dt.AddYears(-1);
    return dt.ToString("yyyy MM dd HH mm ss");
}

To:

string returnDateTimeToMyformat publicdtDateTime (dt
{
    dt = )1AddYears(-.return;
    dt ).ToString("yyyy MM dd HH mm ss");
}

(Я начал с моего курсора сразу после "public" )

Ответы

Ответ 1

Так как CTRL-T меняет местами два символа с обеих сторон курсора, противоположное ему...

дождитесь его...

CTRL-T

: -)

CTRL SHIFT T переносит два слова после курсора.

То, что он делает с вашим блоком, кажется довольно странным. Похоже, что это делается с несколькими частями каждой строки. Мой единственный совет был бы (поскольку врач сказал пациенту, который жаловался, что он болит, когда он ударяет головой о стену): Не делайте этого.

Ответ 2

Как указывали другие, два слова, следующие за курсором, транспонируются, а курсор помещается после слов, которые были транспонированы. Однако Visual Studio 2010 по крайней мере, по-видимому, игнорирует запятые и другую пунктуацию при рассмотрении "слов". Таким образом, одна из возможностей этого заключается в том, что вы можете переупорядочить что-то вроде перечисления. Например,

typedef enum myEnum
{
  ThingOne,
  ThingThree,
  ThingTwo
};

Поместите курсор где-нибудь рядом с ThingThree и нажмите Ctrl Shift T, чтобы получить:

typedef enum myEnum
{
  ThingOne,
  ThingTwo,
  ThingThree
};

Это может быть хорошо, если вы решите, что другой порядок для ваших перечислений лучше. Вы также можете использовать это, чтобы помочь сравнивать идиотипические сравнения и/или быстро и легко форматировать их до лучшего стандарта кодирования.

if ( ptr == NULL ) { /* stuff */ }

считается плохим (неважно, что наличие "если" на его собственной линии также плохо), поскольку вы можете легко написать (или прочитать) "ptr = NULL" случайно. Вам лучше с

if ( NULL == ptr ) { /* stuff */ }

Итак, если вы сделали это неправильно в первый раз, просто выберите нарушающее выражение и... Ctrl Shift T на помощь!

... Да, ладно, так что это не так полезно.

Edit: Хм, я должен добавить, что поведение немного страннее, когда ваш курсор помещается непосредственно перед символом пунктуации (например, левая скобка), следовательно, странный результат, который вы получили, когда вы неоднократно нажимали Ctrl Shift T в фрагменте кода. Кажется, что он просто заменяет строку с завершающим пробелом после курсора со следующим буквенно-цифровым "словом", пропускающим любые символы пунктуации между ними. Результат часто бывает трудно читать, поэтому я не собираюсь утверждать, что точный шаблон.

Ответ 3

Согласно этот веб-сайт:

Переводит два слова, которые следуют курсор. (Например, | End Sub будет изменено на чтение Sub End |.)

Остается только вопрос: ПОЧЕМУ? Ну, это может стать полезным, если у вас есть блок строк кода, где переменным присваиваются значения. (Например, Load/Save) В противоположной функции вы хотите сделать противоположное назначение, возможно, этот ярлык можно использовать в такой ситуации...